关于指针的理解,望高手解答下!
#include <stdio.h> #include <stdlib.h>
#include <string.h>
代码段1
void GetMemory(char **p)
{
*p = (char*)malloc(50*sizeof(int));
//free(*p);
}
void main(void)
{
char * str = NULL;
GetMemory(&str);
strcpy(str, "hello world");
printf("%s\n",str);
}
代码段2
void GetMemory(char *p)
{
p = (char*)malloc(50*sizeof(int));
}
void main(void)
{
char * str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf("%s\n",str);
}
1、代码段2,通过动态分配的空间并没有被清空,为啥不正确?
2、再就是,代码段1假如不注释也是可以正常运行的,个人感觉动态分配的空间已经释放了,应该有问题才是!