可以说我有一个这样的类:我是否必须删除我用新分配的wchar_t?
class LolClass {
LPWSTR* stuff;
LolClass::LolClass(LPWCHAR lols) {
stuff = new LPWSTR[100];
for (int i = 0; i < 100; i++) {
stuff[i] = new wchar_t[wcslen(lols)+1];
wcsncpy(stuffs[i], lols, wcslen(lols)+1);
}
}
LolClass::~LolClass() {
delete[] stuff;
}
}
所以如果我叫
LolClass* veryfunny = new LolClass(L"lol!");
那会使我100笑的,问题是,当我打电话
delete veryfunny;
它删除指针数组,但不是个别wchar_t的,如果我尝试并通过wchar_t循环并删除它们,然后我只是崩溃,我不知道该怎么办,因为我知道事实,他们仍然存在,即使我删除veryfunny后(我通过传递类之外的指针之一检查)
谢谢!
你是什么“撞车”是指本身被删除?我们可以看到的任何报告? – elyashiv 2012-08-15 06:27:59
你应该循环并删除[] stuff [i]',然后是delete [] stuff'。每个'new []'得到'delete []'。 – chris 2012-08-15 06:30:42
你应该为循环中的所有元素调用delete [] stuff [i],否则你会得到内存泄漏 – CyberDem0n 2012-08-15 06:30:55