#include
#include
int main()
{
int *p;
int a;//定义一个栈区变量
p = &a;//指针指向栈区空间
*p = 10;
printf("*p = %d\n", *p);
return 0;
}
int main01()
{
int *p = NULL;
p = (int *)malloc(sizeof(int));
if(p == NULL)
{
printf("分配失败");
return -1;
}
*p = 10;
if(NULL != p)
{
free(p);
p = NULL://这一步很重要
}
//动态分配的空间,如果程序没有结束,不会自动释放,需要程序员手动释放,
//同一块堆区内存只能释放一次,所谓的释放不是指内存消失,而是指这块内存系统部可以再次使用
//内存泄漏:动态分配了空间不释放
//内存污染:非法使用内存
}
int main02()
{
char *p = NULL;
p = (char *)malloc(0);
if(p == NULL)
{
printf("分配失败\n");
return 0;
}
strcpy(p, "mikejiang");
printf("%s\n", p);
free(p);
return 0;
}