C语言,执行时出错
发布网友
发布时间:2023-11-04 03:06
我来回答
共2个回答
热心网友
时间:2024-10-27 15:27
#include <stdio.h>
#include <stdlib.h>
void add(int *pp,int x)
{
int y=x+1;
*pp=(int)y;
}
void main()
{
int *p;
// 这里应该分配sizeof(int),即4,而不是1
// p=(int*)malloc(1);
p=(int*)malloc(sizeof(int));
add(p,24680);
printf("%d\n", *p);
free(p);
}
热心网友
时间:2024-10-27 15:27
#include <stdio.h>
#include <stdlib.h>
void add(int *pp,int x)
{
int y=x+1;
*pp=(int)y; //如果只分配1个字节,这个会造成堆溢出 覆盖free函数所需的信息
}
void main()
{
int *p;
p=(int*)malloc(4); //int是4字节
add(p,24680);
printf("%d\n",*p);
free(p);
}
有兴趣可以看看win32的内存管理机制追问谢谢啊,可惜只能选一个最佳答案。