5

我的代码:

int args_size = 5;
字符** 参数;

args = (char**) malloc(sizeof(char*) * args_size);

// ...

args = (char**) realloc(args, sizeof(char*) * (args_size += 5));

我想将大小增加 5。

但我得到这个错误:

*** 检测到 glibc *** ./a.out: realloc(): 无效的下一个大小:0x0000000000a971c0 ***

我知道捕获 realloc 的临时变量很好,但只是为了简单起见......

4

1 回答 1

5

解决了

最初,大小args为 5 个元素。当程序正在填充args时,它错误地向其中添加了第 6 个元素,然后调用realloc.

这导致了问题中提到的错误。

通过消除错误,遵循 WhozCraig、Jens Gustedt 和其他人的评论,问题得以解决……

谢谢大家!

于 2013-04-16T10:20:16.433 回答