下面的代碼:內存泄漏用的std :: string
#include <string>
void *ptr = nullptr;
std::string *p = new std::string();
*p = "1";
ptr = p;
delete ptr;
似乎使內存泄漏與下面的輸出:
21:檢測到的內存泄漏!
21:傾銷對象 - >
21:{706}正常塊在0x00723860,8個字節長。
21:數據:< Q> C8 04 71 00 00 00 00 00
21:對象轉儲完成。
這是奇怪的,因爲下面的代碼顯示沒有錯誤(作品也爲雙,布爾):
void *ptr = nullptr;
int *p = new int();
*p = 1;
ptr = p;
delete ptr;
什麼我做錯了任何想法? (我需要使用「void *」指針,因爲它可能會保留不同類型的對象)。 非常感謝能幫助我的人! :)
C++有更好的方法來處理不同於'void *'的類型。例如[boost :: any](http://www.boost.org/doc/libs/1_55_0/doc/html/any。html) – risingDarkness
@risingDarkness我從C++開始。如果你可以給出一些其他類型的線索而不是「void *」來使用,那將會很棒! – EuskalNono
這完全沒有道理:'ptr = * p;'。這甚至不應該*編譯*。關於什麼「工作」,「int」具有最微不足道的瑣碎析構函數(* none *)。 'std :: string'不能這麼說。 – WhozCraig