作者ledia (contemplation)
看板CSSE
標題Re: [請益] realloc -- Aborted error
時間Fri Mar 3 09:23:22 2006
※ 引述《mahaw (我要賭本!!)》之銘言:
: struct obj_section *obj_create_alloced_section_first( struct obj_file *f, const char *name,unsigned long align, unsigned long size
: {
: struct obj_section *sec;
: …略
: f->sections = realloc( f->sections,(newidx+1)*sizeof(sec) );
: …略
: }
: 出問題的又是第二個,就是括號裡頭的,f->sections,如果這個欄位改0,那OK,可以
: run過去,但這樣…又不是我要的。 我要保留住先前的值…
: 拜託有任何idea的仁兄能給我點意見,感謝。
: 是空間不夠分了嗎…?
先確定一下
f->scections 的值是否是 malloc 傳回來的值
還是從 malloc 回傳之後又改動過的值?
我猜測是後者才會造成這樣的錯誤
如果是後者的話, 那麼會有 error 是必然的
因為 malloc 是以傳給你的 address 來 identify 他 allocate 給你的空間
若你給 realloc 的 address 並非原本 malloc 回傳的 address 的話
它就沒辦法知道該歸還的是哪一塊空間了
如果非我所猜測, 那麼可能要 trace 程式才能找得到問題了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.56
推 leeming:對低 你應該另外宣告一個 struct obj_section *new_sec; 03/04 00:17
→ leeming:然後 new_sec = realloc(...); 03/04 00:17
→ leeming:這樣舊的值會自動幫你複製到新的記憶體區段中! 03/04 00:21
→ leeming:你再把指標指過去就好了...應該是這樣吧... 03/04 00:22
推 mahaw:多謝兩位兄台的建議!!真的如兩位所言!!謝激不盡~~ 03/06 19:10