gpt4 book ai didi

c++ - 内存泄漏,指向文字的指针

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:46 24 4
gpt4 key购买 nike

我学会了不要让指针指向文字,因为它会导致内存泄漏。但是当我将指针分配给文字时,它仍然指向与之前相同的地址:

    unsigned maxlen = 20;
char* testpointer = new char[sizeof(char) * maxlen]; //Pointer points to RAM
cout << "&testpointer = " << &testpointer << endl;

strncpy(testpointer, "Happy Eastern", 13);
cout << "&testpointer = " << &testpointer << endl;

testpointer = "Merry Christmas"; // I know I shouldn't do this
cout << "&testpointer = " << &testpointer << endl;

每次我仍然得到相同的内存地址:

&testpointer = 0x28fc60
&testpointer = 0x28fc60
&testpointer = 0x28fc60

当我让指针指向文字时,地址不应该改变吗?我认为我用 new 分配的内存应该在 RAM 中,而文字应该在 ROM 中,它们应该有不同的地址。我错了吗?

谢谢你,菲利普

最佳答案

您的cout 指令正在打印名为testpointer 的变量的地址。这是当前函数堆栈帧中的某个位置。与testpointer的值无关,也与testpointer指向的值无关。

另外,要么告诉你不应该让指针指向文字的人疯了,要么你不明白他们对你说的话。让一个指针指向一个文字是绝对没有问题的。

关于c++ - 内存泄漏,指向文字的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47906700/

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