c++ - 如果我确定它在只读内存区域中,那么在不重新分配内存的情况下复制 const char ptr 是否被认为是不好的做法?

标签 c++ c

即我像下面这样初始化一个指针:

const char * ptr1 = "Hello";

然后我将第一个指针的内容分配给另一个指针,而不重新分配/复制内存并可能在另一个函数中使用后者:

const char * ptr2 = ptr1;

当我使用第二个时,第一个不能被释放,对吗? 也无法修改。

唯一需要注意的是,我无法检查内存是否只读。

但如果我确定内存是只读的,那会出什么问题呢?

最佳答案

But if I'm sure, that the memory is read-only, what can go wrong?

没什么,因为字符串文字是存储在可执行文件中的文字,永远无法释放。

The first can't be deallocated while I'm use the second, right? It can't be modified either.

没错。

为了进一步解释,如果你这样做

const char * ptr1 = "Hello";

字符串的内容存储在编译后的文件中,这意味着您不能释放它,任何优化/程序也不能。

关于c++ - 如果我确定它在只读内存区域中,那么在不重新分配内存的情况下复制 const char ptr 是否被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33866837/

相关文章:

c - 如何修复 scanf 函数被忽略的问题

c - 如何计算除双引号或单引号之外的字符?

c - 找到最长距离的最小值

c++ - 智能感知是否可以从嵌套文件夹中使用 "stdafx.h"?

C++模板函数,替换失败跳过实现

c++ - 可以使用函数局部类作为 find_if 的谓词吗?

c - 如果我在 C 中不使用从零开始的数组会发生什么

java - "Speaker Recognition and Segmentation"

c++ boost迭代器抛出断言并且程序终止

c程序将一个int分配给一个bool?