【发布时间】:2015-09-30 02:21:42
【问题描述】:
鉴于以下行:
int *digits = (int *) malloc(3 * sizeof(int));
假设我们将值 1、2 和 3 存储在位置,digits[0]、digits[1]、digits[2]。如下:
digits[0] = 1;
digits[1] = 2;
digits[2] = 3;
如果调用以下行:
free(++digits);
是释放了 malloc 返回的整个内存范围,还是只是 digits 当前指向的 int 大小的块 - 当时,digits[1] ?或者是正确的方法,通过迭代释放整个范围,即:
for (i = 0; i < 3; i++)
{
free(digits[i]);
}
我正在尝试了解对 free 的调用范围。 malloc 返回的整个内存块是否已释放,或者只是当前由指针 digits 引用的子部分已释放?
【问题讨论】:
标签: c pointers memory-management malloc