慕容紫小英 发表于 2020-5-4 15:25:49

关于动态内存管理的问题

我将realloc用在了一个函数当中,如 下图所示

函数返回一个指针,在return语句之后用free生效吗?
如果不生效,在return前面用free不就没办法返回指针了吗?
希望有大佬帮忙解答一下

永恒的蓝色梦想 发表于 2020-5-4 15:55:50

你不光不能free,还得str定义成static,否则返回野指针

慕容紫小英 发表于 2020-5-4 16:02:32

永恒的蓝色梦想 发表于 2020-5-4 15:55
你不光不能free,还得str定义成static,否则返回野指针

谢谢谢谢,还真不知道这个知识点 ,那我是不是可以再声明一个char指针保存str,这样str就可以free掉了吧

KevinHu 发表于 2020-5-4 16:13:19

不用释放str,因为str本来就是指向你想要的数据(因为str是一个指针,所以返回时还是指向原来的地方),一释放掉了不就没有了吗?

要等不用str的时候再释放str

4goodworld 发表于 2020-5-4 16:17:05

我感觉你要不在函数外部进行free掉

慕容紫小英 发表于 2020-5-4 16:24:00

KevinHu 发表于 2020-5-4 16:13
不用释放str,因为str本来就是指向你想要的数据(因为str是一个指针,所以返回时还是指向原来的地方),一 ...

嗯嗯了解了{:10_323:}

慕容紫小英 发表于 2020-5-4 16:36:42

4goodworld 发表于 2020-5-4 16:17
我感觉你要不在函数外部进行free掉

感谢解答{:10_310:}

永恒的蓝色梦想 发表于 2020-5-4 16:58:15

慕容紫小英 发表于 2020-5-4 16:02
谢谢谢谢,还真不知道这个知识点 ,那我是不是可以再声明一个char指针保存str,这样str就可以free掉了吧

在函数外声明一个char指针,作为参数传给函数。
页: [1]
查看完整版本: 关于动态内存管理的问题