Я делаю:
typedef struct {
Scene *scene;
MeshStore *store;
float angle;
} DebugModel
...
free_entire_store(debug_model.store);
/* Frees the store and any meshes related to it */
void free_entire_store(MeshStore *store) {
/* implementation not important for the problem at hand */
}
Теперь, если я установил gdb, установив точку останова в начале free_entire_store
, я получу следующие странные данные ..
(gdb) p debug_model
$5 = {scene = 0x1044a680, store = 0x1044a630, angle = 87.8401108}
(gdb) p store
$6 = (MeshStore *) 0x10438b40
debug_model isглобальный, вышеприведенный вывод отладки происходит из той же точки в программе.
Итак, хотя я просто передаю указатель в качестве параметра, он каким-то образом изменяется.Стек поврежден, хотя и очень предсказуемым образом (одни и те же данные появляются при каждом запуске).Что могло вызвать это?Я не думаю, что я освободил что-либо дважды или что-то еще до вызова этой функции.Как значение, переданное в качестве параметра, может не соответствовать значению в стеке?