如何正确重新分配?

时间:2015-12-06 13:41:23

标签: c memory-management realloc


我写了一个小函数来返回一个由给定程序输入的字符串,它工作正常,直到我交换常量大小的动态内存分配。
在我用一些printf()测试之后看起来程序崩溃了当调用realloc()时。
我在使用realloc()做错了什么,还是其他什么?

hasPekingese()


谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

当您致电realloc时,您必须为其分配内存开头的地址,该地址与malloc最初返回的地址相同。 free也是如此。

但是您正在修改line的值,因此在调用realloc时它不再指向块的开头。

这是未定义的行为,因此绝对可以使用段错误。