C语言为指针动态分配内存--c语言中文网造成内存泄漏示例
#include <stdio.h>
#include <stdlib.h>
int main(void){
int *p, i;
p = (int *)malloc(6 * sizeof(int)) ;
if (p == NULL) { //判断是否为空
printf("内存分配出错!");
exit(1);
}
for (i=0; i<6; i++) {
p++;
*p = i;
printf("%2d", *p);
}
printf("\n");
free(p); //这句运行时出错
return 0;
}
2正确写法
#include <stdlib.h>
int main(void){
int *p, i;
p = (int *)malloc(6 * sizeof(int)) ;
if (p == NULL) { //判断是否为空
printf("内存分配出错!");
exit(1);
}
for(int j=0; j<6; j++)
printf("%d\n",p+j);
printf("\n");
for (i=0; i<6; i++) {
*p = i;
printf("%2d\n", *p);
if(i<5)
{
p++;
}
}
printf("start p-- p\n");
for(int j=0; j<5; j++)
p--;
printf("start free p\n");
free(p); //这句运行时出错
return 0;
}