You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中char*函数返回的内存会在调用函数foo结束时释放吗?

字符串字面量的内存释放问题

你的代码里,function()返回的是字符串字面量 "string",这类字符串的内存是程序启动时就分配在只读数据段的,既不属于栈内存,也不是malloc分配的堆内存。

针对你的问题:

  • foo函数执行结束时,栈上的指针变量string会被销毁,但它指向的字符串字面量的内存不会自动释放
  • 这块内存的生命周期和整个程序一致,只有当程序退出时才会被操作系统回收
  • 注意:你绝对不能用free()去释放这个字符串字面量的内存,这么做会触发未定义行为

对比你提到的malloc场景:

  • malloc分配的堆内存不会随函数栈帧销毁而自动释放,必须手动调用free()
  • 而字符串字面量属于静态存储区的内存,不需要开发者手动管理其生命周期

内容的提问来源于stack exchange,提问作者jmsapt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:48:16