作者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
1F:推 leeming:对低 你应该另外宣告一个 struct obj_section *new_sec; 03/04 00:17
2F:→ leeming:然後 new_sec = realloc(...); 03/04 00:17
3F:→ leeming:这样旧的值会自动帮你复制到新的记忆体区段中! 03/04 00:21
4F:→ leeming:你再把指标指过去就好了...应该是这样吧... 03/04 00:22
5F:推 mahaw:多谢两位兄台的建议!!真的如两位所言!!谢激不尽~~ 03/06 19:10