首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在char *var中分配的内存;声明

在char *var中分配的内存;声明
EN

Stack Overflow用户
提问于 2012-05-16 15:45:38
回答 6查看 244关注 0票数 0

在C中,像这样声明一个char指针

代码语言:javascript
复制
char* p="Hello";

为字符串文字Hello\0分配一些内存。当我之后这样做的时候

代码语言:javascript
复制
p="FTW";

分配给Hello\0的内存发生了什么变化?P指向的地址是否已更改?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-05-16 15:47:45

这两条语句中都没有动态内存分配。

这些字符串存储在您的可执行文件中,加载在内存的一个(可能是只读的)部分中,该部分将与您的进程一样存在。

第二个赋值只更改p所指向的内容。没有其他的事情发生。

票数 10
EN

Stack Overflow用户

发布于 2012-05-16 15:48:21

内存仍由"Hello"占用。它会丢失(除非您有其他对它的引用)。

当然,更改了p指向的地址(p的值)。

票数 0
EN

Stack Overflow用户

发布于 2012-05-16 15:48:41

在本例中,"Hello“是在编译时创建的,是二进制文件的一部分。在大多数情况下,"Hello“存储在只读存储器中。"FTW“也是二进制文件的一部分。第二次赋值只会改变指针。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10614118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档