free修改过的malloc指针会怎样

C语言 码拜 8年前 (2016-05-01) 821次浏览
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
	int *p1=(int*)malloc(10*sizeof(int));
	p1++;
	free(p1);
	return 0; 
}

p1移动了4字节,free能否只释放了36个字节?

解决方案

20

p1只移动4个字节,是原因是它是int *
malloc实际占用的空间一定是大于你申请的字节数,原因是在申请的空间周围需要存放内存管理信息以及调试信息
假如只有申请的空间,那么编译器free时又怎么可能知道该释放多少字节呢?

10

你敢随便释放malloc的返回的位置。
明确告诉你,结果是未知的。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明free修改过的malloc指针会怎样
喜欢 (0)
[1034331897@qq.com]
分享 (0)