malloc返回内存的免费范围

her*_*tik 0 c malloc pointers memory-management

给出以下行:

 int *digits = (int *) malloc(3 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

假设我们将值1,2和3存储在位置,数字[0],数字[1],数字[2]中.如下:

digits[0] = 1;
digits[1] = 2;
digits[2] = 3;
Run Code Online (Sandbox Code Playgroud)

如果调用以下行:

free(++digits);
Run Code Online (Sandbox Code Playgroud)

malloc返回的整个内存范围是释放的,还是只是数字当前指向的int大小的块- 那时,数字[1]?或者是通过迭代释放整个范围的正确方法,即:

for (i = 0; i < 3; i++)
{
    free(digits[i]);
}
Run Code Online (Sandbox Code Playgroud)

我想了解免费电话的范围.malloc返回的整个内存块是释放的,还是只是一个子部分,当前由指针数字引用被释放?

Rus*_*ltz 5

您必须free()获得完全相同的指针值malloc().分配的整个内存块malloc()将立即释放.

不能使用指针的int缓冲区的中间通过退还给你malloc()free()它,但你必须通过free()什么malloc()返回你.

http://linux.die.net/man/3/malloc非常清楚这一点.