即我像下面这样初始化一个指针:
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/