gpt4 book ai didi

c++ - 改变字符指针的值

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

为什么上面的方法有效?

char*p = new char[4];
p = "hey";
p = "jey";

但这不是吗?

char* p = new char[4];
p = "hey";
p[0] = 'j';

第二个示例导致段错误。

在第一个例子中,“jey”是否覆盖了“hey”

最佳答案

"hey""jey" 等字符串文字是常量,您无法修改。

声明

p = "hey";
p = "jey";

使p 指向指定字符串的第一个元素。虽然语言允许这样做,但您丢失了从 new 获得的指针信息,现在出现了内存泄漏。

您在第二个示例中遇到了同样的问题,但是当您尝试修改字符串文字时出现了段错误

p[0] = 'j';

假设 “hey” 存储在地址为 0x010x020x03 的一些只读存储器中对于三个字符,p 指向 0x01。执行 p[0] = 'j' 您试图更改地址 0x01 中存储的值,但由于它是只读内存,您会遇到段错误。

关于c++ - 改变字符指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762875/

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