I. char *str = "Stack";II. char *str = (char*) malloc(6); strcpy(str, "Stack");两种方法有什么区别?它们是相同还是不同?
3 回答
慕森王
TA贡献1777条经验 获得超3个赞
在第一种情况下,您的指针指向const char*
在进程存储器的只读部分分配的a 。
在第二种情况下,您将动态分配内存,最后将字符串“ Stack”复制到您分配的内存中。
您最终必须使用释放II的内存free
。
SMILET
TA贡献1796条经验 获得超4个赞
忘记其他声称不正确的内部堆栈存储答案。(哦,现在这些答案已被删除。)
case I:
您有一个指向str
内容为的只读存储区(该.rodata
部分)的指针"Stack"
。
case II:
您有一个指针str
,该指针指向动态分配的区域(在堆中),其内容为"Stack"
,该区域是可修改的,free(str)
使用后应通过调用来释放。
- 3 回答
- 0 关注
- 406 浏览
添加回答
举报
0/150
提交
取消