CMemFile Detach 記憶體洩漏

2021-07-26 05:25:45 字數 766 閱讀 3790

cmemfile::detach

byte* detach( );

返回值:

返回乙個指向包含記憶體檔案內容的記憶體塊指標。

說明:呼叫該函式,以獲取cmemfile使用的記憶體塊的指標。

呼叫該函式也關閉了cmemfile。需要呼叫attach重新為cmemfile附加記憶體塊。如果希望重新附加該檔案,並使用其資料,那麼在呼叫detach函式之前,應當呼叫cfile::getlength以獲取檔案的長度。要注意的是如果已經為cmemfile附加了記憶體塊,這樣就可以使用其資料(ngrowbytes == 0),同樣,也不能增大記憶體檔案。

轉到cmemfile::detach的原始碼:

byte* cmemfile::detach()

顯然這裡申請的記憶體指標直接交給使用者了,cmemfile物件也基本無用了,所以要手動釋放,即:

byte* pbbuff= (byte*)new char [1024];

memset(pbbuff, 0, 1024);

memcpy(pbbuff, "hello", sizeof("hello"));

cmemfile mf;

mf.seektoend();

mf.write(pbbuff,1024);

delete pbbuff;

byte* lpbuffer = mf.detach();

cstring strsocket(lpbuffer);

free(lpbuffer);//cmemfile的記憶體使用malloc申請的

內點法python 內點法

文字理解 內點法屬於約束優化演算法。約束優化演算法的基本思想是 通過引入效用函式的方法將約束優化問題轉換成無約束問題,再利用優化迭代過程不斷地更新效用函式,以使得演算法收斂。內點法 罰函式法的一種 的主要思想是 在可行域的邊界築起一道很高的 圍牆 當迭代點靠近邊界時,目標函式徒然增大,以示懲罰,阻止...

QPixmap loadFromData記憶體洩露

環境 qt 4.6.2 ubuntu 8.10 使用qt4.6.2 中的qpixmap loadfromdata const qbytearray data,const char format 0,qt imageconversionflags flags qt autocolor 發現記憶體有洩露...

內錶 XML互轉 JSON 內錶互轉

轉進內錶 strans try.call transformation id source xml lv text out options clear all 4.7 沒有這個options value handling accept data loss 這個引數也沒有 result data p ...