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返回的整个内存块是释放的,还是只是一个子部分,当前由指针数字引用被释放?
您必须free()获得完全相同的指针值malloc().分配的整个内存块malloc()将立即释放.
不能使用指针的int缓冲区的中间通过退还给你malloc()到free()它,但你必须通过free()什么malloc()返回你.
http://linux.die.net/man/3/malloc非常清楚这一点.