Вопросы по теме 'type-punning'
Псевдоним строгого указателя: любое решение для конкретной проблемы?
У меня проблема, вызванная нарушением строгого правила псевдонима указателя. У меня есть тип T , полученный из шаблона, и некоторый интегральный тип Int того же размера (как и sizeof ). Мой код по существу делает следующее:
T x =...
806 просмотров
schedule
22.06.2022
Псевдоним строгого указателя: является ли доступ через «изменчивый» указатель/ссылку решением?
По пятам конкретной проблемы , самостоятельный ответ и комментарии к нему, я хотел бы понять, является ли это правильным решением, обходным путем/взломом или просто неправильным.
В частности, я переписал код:
T x = ...;
if (*reinterpret_cast...
1482 просмотров
schedule
17.05.2023
Введите каламбур, char[] и разыменование
У меня есть структура, предназначенная для хранения пользовательских данных (т.е. из плагина). У него есть такой char[] с заданным максимальным размером для хранения этих данных.
struct A
{
// other members omitted
// data meant to be...
763 просмотров
schedule
27.11.2022
Псевдоним T* с char* разрешен. Допускается ли и наоборот?
Примечание. Этот вопрос был переименован и сокращен, чтобы сделать его более точным и понятным. Большинство комментариев относятся к старому тексту.
Согласно стандарту, объекты разных типов не могут использовать одну и ту же ячейку памяти....
3440 просмотров
schedule
26.05.2022
Чтение младшего бита указателя таким образом, чтобы *вероятно* работало на как можно большем количестве систем.
Кажется, что младший бит указателей, равный 0, является более или менее довольно переносимым (где переносимость, очевидно, не означает «стандартный», но людям это сходит с рук, и в некоторых случаях они могут использовать это с некоторым...
98 просмотров
schedule
30.05.2024
c++ - тип каламбура из указателя без знака char, когда известен базовый тип
Вызывает ли следующая программа какое-либо неопределенное поведение? В частности, нарушает ли это какие-либо строгие правила псевдонимов?
void zeroInt(unsigned char *mem) {
*reinterpret_cast<int *>(mem) = 0;
}
int main() {
int...
530 просмотров
schedule
12.05.2023
Можно ли написать быструю функцию InvSqrt () Quake на Rust?
Это просто для удовлетворения моего любопытства.
Есть ли реализация этого:
float InvSqrt (float x)
{
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);...
7952 просмотров
schedule
06.08.2022
Как элементы в std::unordered_set хранятся в памяти на С++?
Возясь с итераторами с типизированными каламбурами, я наткнулся на возможность сделать
std::vector<int> vec{ 3, 7, 1, 8, 4 };
int* begin_i = (int*)(void*)&*vec.begin();
std::cout << "1st: " << begin_i << " = " <<...
591 просмотров
schedule
22.05.2022
Насколько плохо было бы использовать каламбур между тривиально копируемыми структурами?
У меня есть библиотека с интерфейсом Swift, которая скрывает слой C ++. В C ++ у меня struct A { ...} . Я хочу, чтобы Swift передавал копии этой структуры по значению (по разным сложным причинам). Swift понимает объявления C, но не C ++, поэтому...
119 просмотров
schedule
19.07.2023