为了账号安全,请及时绑定邮箱和手机立即绑定

声明的字符串和分配的字符串之间的区别

声明的字符串和分配的字符串之间的区别

C
红颜莎娜 2019-12-04 10:15:50
I.  char *str = "Stack";II. char *str = (char*) malloc(6);    strcpy(str, "Stack");两种方法有什么区别?它们是相同还是不同?
查看完整描述

3 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

在第一种情况下,您的指针指向const char*在进程存储器的只读部分分配的a 。
在第二种情况下,您将动态分配内存,最后将字符串“ Stack”复制到您分配的内存中。

您最终必须使用释放II的内存free


查看完整回答
反对 回复 2019-12-04
?
SMILET

TA贡献1796条经验 获得超4个赞

忘记其他声称不正确的内部堆栈存储答案。(哦,现在这些答案已被删除。)

case I:您有一个指向str内容为的只读存储区(该.rodata部分)的指针"Stack"

case II:您有一个指针str,该指针指向动态分配的区域(在堆中),其内容为"Stack",该区域是可修改的,free(str)使用后应通过调用来释放。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 406 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信