его кусок генерируемые вершины. Для экономии пропускной способности я хитрым образом кеширую кусок буфера в передвигающемся окне, которое представлено как std::vector<uint8_t>, поскольку так удобнее считать смещения при работе с отображенным на ram буфером через c-интерфейс.
Однако, в остальной программе удобнее работать с массивом float-ов (в виде которых представлены вершины). Поэтому у меня есть метод, в котором к window.data() прибавляется смещение, а затем получившийся uint8_t* reinterpret_cast'ится к float*.
При этом, в один момент, на вид не связанный ни с чем другим, reinterpret_cast внезапно превращает указатель в null, что закономерно приводит у сегфолту. Выравнивание в норме (остаток от деления на sizeof(float) = 0).
Не понимаю, почему такое может происходить. Может у кого-то есть идеи?
каст флоатов рисковая затея
что в ассемблере? выравнивание указателя правильное? предупреждения компилятор выдает?
Обсуждают сегодня