酷!學園

技術討論區 => 程式討論版 => C/C++程式設計討論區 => 主題作者是: maha 於 2006-02-28 17:48

主題: realloc -- aborted error...
作者: maha2006-02-28 17:48
我想請教個困擾已久的問題…這問題讓我很久沒進度了。拜託有人能指點一下。
我首先有用到二個struct定義如下:
struct obj_section{
   int index;                  ElfW(Shdr) header;
   const char *name;
   char *contents;         
                     struct obj_section *next; };

struct obj_file{
                ...略
   struct obj_section **sections;
                ...略
};
在程式的某處我已經對sections的空間做malloc了。
但是我在處理的過程中,又必須要動態的調整sections的空間大小,所以
我用realloc function,可是…不知道怎麼回事,執行的時候一直aborted…
出問題的這行如下:
struct obj_section *obj_create_alloced_section_first( struct obj_file *f, const char *name,unsigned long align, unsigned long size )
{
…略
f->sections = realloc( f->sections,(newidx+1)*sizeof(sec) );
…略
}
出問題的又是第二個,就是括號裡頭的,f->sections,如果這個欄位改0,那OK,可以run過去,但這樣…又不是我要的。
另外我在cygwin下跑程式,這邊又只丟個Aborted給我…
拜託有任何idea的仁兄能給我點意見,感謝。
主題: realloc -- aborted error...
作者: twu22006-02-28 18:13
直接這樣寫會有點危險吧. 如果失敗的話, 原本的 pointer 不也被設為 0, 那個 memory 不就再也抓不到?

如果查不出原因, 就分兩段做吧. 先 malloc 新的, 再 free 舊的.
主題: realloc -- aborted error...
作者: maha2006-03-02 21:39
嗯~我還是查不出原因,我已經自己手動realloc了~謝了~
主題: Re: realloc -- aborted error...
作者: 螢火飛2006-03-07 22:51
代碼: [選擇]
struct obj_section{
int index; ElfW(Shdr) header;
const char *name;
char *contents;
                     struct obj_section *next; };

struct obj_file{
                ...略
struct obj_section **sections;
                ...略
};

有點奇怪,obj_section 看起來是一個 List struct,那麼你為何在另一個 obj_file 中對 obj_section 作 realloc,而不是 malloc 一個新的 obj_section 放到 f->obj_section.next ?