gpt4 book ai didi

c++ - 这行代码是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:35 25 4
gpt4 key购买 nike

所以我最近在看某人的代码,我发现编译器没有报错,也没有以下任何运行时错误:

const char *p = "I didn't malloc...";

上面的代码有效,但我想知道如何。这就是我认为正在发生的事情。谁能证实这一点?

所以“我没有 malloc...”在编译时在堆栈上静态分配,地址被传递给指针 p。类似于静态数组的分配方式。我对此有 90% 的把握,但一些确认会有所帮助。

谢谢。

最佳答案

你有一个字符串文字 "I didn't malloc..." 位于只读内存中的某处(确切地说是实现定义的位置),它由指针 p 指向

需要注意的重要一点是,任何更改此字符串文字的尝试都将导致未定义的行为

事实上,在 C++ 中,不推荐像您那样声明字符串文字。
所以在 C++ 中,您应该使用 const 限定符,例如:

const char *p = "I didn't malloc...";

关于c++ - 这行代码是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8458379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com