Rob*_*tle -4 c heap malloc free
void* heap = malloc(100);
char *c = heap;
strcpy(c, "Terence");
printf("heap = %s\n", heap);
free(heap);
heap = malloc(100);
printf("heap = %s\n", heap);
Run Code Online (Sandbox Code Playgroud)
输出是:
heap = Terence
heap =
Run Code Online (Sandbox Code Playgroud)
这就是我的期望,但现在我有一个更复杂的代码,结构与上面类似,但输出如下:
heap = "Terence"
heap = " ren "
Run Code Online (Sandbox Code Playgroud)
类似的东西.
堆似乎还没有被清理干净?
有办法解决吗?
分配的内存区域malloc具有不确定的初始值.
从C标准(强调我的):
(c99,7.20.3.3p2)"malloc函数为一个对象分配空间,该对象的大小由大小指定,其值是不确定的*."
使用calloc或memset之后malloc具有确定值.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |