我有一个名为myString的简单类,它将char*
作为私有成员。不管我做什么,我似乎无法删除它。
class myString
{
public:
myString():letters( "This is a string" ){}
~myString()
{
delete []letters;
}
private:
char* letters;
}
我已尝试过delete letters
,delete[] letters
等,但我总是收到错误消息。我曾经调试过,字母总是初始化为字符串/指向字符串,调试器总是在删除行崩溃。
答案 0 :(得分:3)
letters
指向字符串文字,也就是说myString
的每个实例都指向加载的程序可执行文件中的相同数据。
您无法删除字符串文字,也不需要。
答案 1 :(得分:3)
请注意:
答案 2 :(得分:2)
首先分配内存然后尝试删除,你试图删除一个字符串文字。
class myString
{
public:
myString() {letters= new char [25]; /* Copying code */}
~myString()
{
delete []letters;
}
private:
char* letters;
}
答案 3 :(得分:0)
您似乎希望拥有该字符串的副本,也许您以后可以对其进行修改。 C ++不会为你创建字符串缓冲区,你必须自己做。
myString()
{
letters = new char[MAX_STRING_LEN];
strcpy(letters, "This is a string");
}
当然最好使用std::string
而不是动态分配的字符缓冲区,但我会假设你有理由。