删除wchar_t指针在64位版本上崩溃

时间:2009-11-09 21:34:53

标签: visual-c++ memory-management

我遇到了一个托管的c ++库,它在遇到delete语句时崩溃,但它只在64位版本上崩溃。代码是:

LPWSTR pwmsURL = NULL;
pPresentationCtx->GetStringValue(L"WMS_PRESENT_ORIGINAL_REQUEST_NAME", 17, &pwmsURL, 0);
String^ wmsURL = gcnew String(pwmsURL);
//this delete is the problem line...
delete [] pwmsURL;

如果我注释掉删除,一切正常,但我不想创建内存泄漏。在32位版本上没有问题。知道这是怎么回事吗?

1 个答案:

答案 0 :(得分:2)

delete[]只能删除new[]分配的内存。要在此处使用它,您需要确切地知道pPresentationCtx->GetStringValue如何分配返回的内存,而且它似乎 not 通过new[] - 因此崩溃。

我认为您正在使用的API提供了一个专门用于释放由其提供的函数创建的内存的函数。检查文档(如果是Win32,可能类似于GlobalFree。)