1.由于指针所指位置不同,而导致的断点
void main()
{
char *str;
str = (char *)malloc(15);
strcpy(str,"runoob");
printf("string=%s\nadress=%p\n", str,str);
//%p格式符会输出指针本身的值,也就是指针指向的地址值
str = (char *)realloc(str,25);
str = "string";
printf("string=%s\nadress=%p\n", str, str);
free(str);
system("pause");
}
编译输出
由此,我们可以观察到两次str中保存的的地址不同,即指针两次指向不同的内存单元,所以在free时会触发断点
如图所示
再来看一个例子
void main()
{
int i=10;
int *p;
p = (int *)malloc(20);
printf("adress=%p", p);
p = &i;
printf("adress=%p", p);
free(p);
}
这是在给指针p分配了空间后又给p赋值
来看编译后的输出
指针所指位置不同,进而释放时触发断点
来源:CSDN
作者:weixin_42577143
链接:https://blog.csdn.net/weixin_42577143/article/details/104209211