69,373
社区成员
发帖
与我相关
我的任务
分享
[code=C/C++]
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
char a='a';
char *p;
p=(char *)malloc(sizeof(char));
if(p==NULL)
{
printf("aaaaaa");
getch();
exit(0);
}
*p=a; //既然你已经给p申请了空间那么 就可以直接把值放入它申请的空间内,而非让它重新指向a,
//那样在free时,由于是非p申请的内存区,强制对其释放(即对a释放它所占的内存区) 将会内存报错
printf("%c",*p);
free(p);
}
void main()
{
char a='a';
char *p;
p=(char *)malloc(sizeof(char)); //没有必要分配内存
if(p==NULL)
{
printf("aaaaaa");
getch();
exit(0);
}
p=&a; //因为这里p指向了a, a已经有空间了,所以不用分配。
printf("%c",*p);
free(p); //因为p = &a将p的值改变了, 而此时free的地址是a的地址而不是前面malloc的地址,会抱错的
}