0
的malloc分配的數據時,我分配一些數據,C風格,像這樣的(一些初始化代碼離開了):內存問題使用OpenGL的
room_t* make_room(int width, int height)
{
room_t* room = (room_t*) malloc(sizeof(room_t));
/* Initialization code sets some stuff, no allocations */
return room;
}
後,我用這個功能在可可視圖繼承從NSOpenGLView
這樣的:
- (void) drawRect: (NSRect) bounds
{
room_t* room = make_room(4, 4);
glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
draw_room(room, 0);
destroy_room(room);
}
draw_room
是一個簡單的功能,吸引了幾個三角形和destroy_room
重新分配的對象。但是,我得到一個錯誤在glClear(SIGABRT
)是這樣的:
malloc: *** error for object 0x101811bf8: incorrect checksum for freed object - object was probably modified after being freed.
所以,對我來說,這似乎是OpenGL函數都設法釋放的東西,但我不知道。無論哪種方式,如果我停止使用我的malloc
'd對象,而只是繪製三角形硬編碼的一切工作正常。
我也應該說只是分配room_t
數據會使程序崩潰,我不必使用分配對象中的任何數據來獲得崩潰。我不允許在這樣的Cocoa代碼中使用malloc
,還是我錯過的其他東西?
有時你只需要有人指出你是個白癡。顯然我很喜歡指針算術。我想我開始責怪可可,因爲撞車出現在「錯誤」的地方。謝謝,並遺憾浪費你的時間! – ohrman