このコードで*data
が使用しているメモリを解放する方法はありますか?新しい[] * charを削除[](ed)できますか?
#include <iostream>
#include <stdlib.h>
using namespace std;
class mstring {
public:
char *data;
int length;
mstring::mstring()
{
length = 8;
data = new char[length];
data = "UNKNOWN";
cout << "In mstring default ctor" << endl;
}
mstring::~mstring()
{
delete[] data;
cout << "In mstring dtor" << endl;
}
};
int main() {
mstring a;
cout << a.data;
}
"UNKNOWN"として削除しようとするとコードがクラッシュし、削除できません。
あなたはより多くのコンパイラの警告を有効にし、より良い学習教材を取得する必要があります。 –
あなたは 'strcpy()'を使って 'char *'を '削除'しません! (一度、それは言った:_ [私は '' * char 'を単に削除するために '' strcpy'_を使用しなければならないという事実を承知しています) –
'std :: string'を使ってみてください。人生はずっと簡単です – JVApen