ass*_*sin 3 c memory free memory-management
我对C中的free()有疑问.
假设我有一个指向某个结构的指针(比如node*ptr)..在释放它之后我可以将它初始化为NULL并使用malloc()或realloc()指向一个新的位置吗?
例如:
node *ptr=NULL;
ptr=realloc(ptr,sizeof(node)); //works exactly like malloc
/* Do some operations on ptr */
free(ptr);
ptr=NULL;
ptr=realloc(ptr,sizeof(node));
Run Code Online (Sandbox Code Playgroud)
这是有效的,还是会产生问题.我使用realloc代替malloc的原因是因为我的所有realloc()调用都在一个循环中(所以在第二个参数中代替sizeof(node)它实际上是n*sizeof(node),其中n继续递增...并且这个结果数组中的最后一个位置是用新数据写的)其中ptr指向的内存一直在增加,直到循环结束,此时我不需要ptr指向的内存中的数据,所以我认为它最好释放它.现在,所有这些都嵌套在一个更大的(外部)循环中.
非常感谢你的帮助
ptr 不记得它曾被赋予一个值,如果它被赋值为NULL又重新使用它与第一次使用它没有什么不同.
因为realloc()行为就像malloc()它传递一个NULL指针一样,它应该可以正常工作.
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |