扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
这样一个例子:
以下是引用片段: void test(char *ps) { ps = (char *)malloc(10*sizeof(char)); } int main(void) { char *str = NULL; test(str); strcpy(str, "abcd"); cout << str << endl; return 0; } |
用指针作为参数,在函数内部申请动态内存,结果该
原因其实很简单,ps申请了内存,也就是改变了ps这个副本的内容(即申请的动态内存地址),但函数返回了,原形参ps的内容没有任何改变,就如同上述的传值一样,ps的内容仍为NULL,于是出错。
而且不但出错,该程序还会出现内存泄露的问题,因为malloc的这块内存未释放,也无法释放了。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者