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

将字符串分配至malloc的二维char数组时不符合预期的问题排查

问题分析与修复方案

核心错误

你代码里的ret[pos] = sc;直接把栈局部变量的地址存进了结果数组,这是问题根源:

  • char sc[n + 1];是栈上的局部变量,它的内存仅在当前函数栈帧有效。当循环迭代结束或递归返回后,这块栈内存会被系统回收、覆盖。
  • ret数组里存的指针指向的是已失效的内存,后续访问自然会读出乱码或不确定值。

修复代码

为每个生成的字符串分配堆内存,复制内容后再存入ret:
把ret[pos] = sc;替换成以下代码:

ret[pos] = malloc(n + 1);
strcpy(ret[pos], sc);

注意事项

LeetCode的测试框架会负责释放你分配的堆内存,不用手动调用free,但必须保证每个结果字符串都分配在堆上,不能直接使用栈内存的地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:22:19