1
对于返回值为指针的函数,当指针指向的内存为栈内存时,调用函数是得不到原来函数里指针所指内容的。因为函数返回时,会释放栈内存空间。如:
char * getMemory()
{
char p[] = "hello";
return p;
}
int main()
{
char * str = getMemory();
printf(str);
printf(“\n");
return 0;
}
输出结果为空。
但是当返回的指针指向的内存为堆内存时,能得到指针指向的空间,因为函数返回时不释放堆空间。所以注意在函数调用后记得释放,否则内存泄漏。如:
char * getMemory()
{
char *p = (char *) malloc(10);
return p;
}
int main()
{
char * str = getMemory();
strcpy(str, "hello");
printf("%s\n",str);
return 0;
}
输出结果:
hello