最近写了个关于动态数组的代码,遇到了一个大坑,特此记录
先说结论:
1.利用malloc创建堆空间,大小最好设置大一点,不然后面存进去的值需要的空间过大会导致各种的堆、指针问题
2.只能使用realloc对已经创建的空间进行修改大小,不能直接将malloc中的大小改掉,这样是无法对已经创建好的空间进行修改的
3.如果free函数在调试的时候,弹窗报堆错误,就是因为malloc创建的时候给予的大小过于小,由于后面存进去的所需空间很大,所以使用free的时候会报错
错误示范如下:
这种情况它在调试的时候不会报错,但是在free的时候会报错,指针无法正确的指向所需要的值。
在开辟空间的时候的大小不能太小,需要扩大空间应该调用realloc函数进行扩大空间,不能使用变量的形式改变大小,达到扩大空间的想法