2009-11-09 39 views
0

我遇到了一個託管的C++庫,當遇到delete語句時會崩潰,但它只會在64位版本上崩潰。代碼是:在64位版本上刪除wchar_t指針崩潰

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位版本沒有問題。任何想法這是怎麼回事?

回答

2

delete[]只能刪除由new[]分配的內存。要在這裏使用它,你需要知道如何pPresentationCtx->GetStringValue分配返回的內存,它看起來而不是通過new[] - 因此崩潰。

我想象你正在使用的API提供了一個專門用於釋放由其提供的函數創建的內存的函數。檢查文檔(如果是Win32,可能是GlobalFree)。

+0

謝謝 - 回去並挖掘到文檔,它確實使用CoTaskMemAlloc/CoTaskMemFree。 – flatline 2009-11-09 22:01:38