指针

来源:互联网 发布:淘宝苹果电脑有假货吗 编辑:程序博客网 时间:2024/06/03 22:34

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


原创粉丝点击