作者 主題: realloc -- aborted error...  (閱讀 4346 次)

0 會員 與 1 訪客 正在閱讀本文。

maha

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
realloc -- aborted error...
« 於: 2006-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的仁兄能給我點意見,感謝。

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5396
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
realloc -- aborted error...
« 回覆 #1 於: 2006-02-28 18:13 »
直接這樣寫會有點危險吧. 如果失敗的話, 原本的 pointer 不也被設為 0, 那個 memory 不就再也抓不到?

如果查不出原因, 就分兩段做吧. 先 malloc 新的, 再 free 舊的.

maha

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
realloc -- aborted error...
« 回覆 #2 於: 2006-03-02 21:39 »
嗯~我還是查不出原因,我已經自己手動realloc了~謝了~

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
Re: realloc -- aborted error...
« 回覆 #3 於: 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 ?