VarFormat的不正確使用導致記憶體洩漏

2021-04-01 09:44:02 字數 552 閱讀 8256

varformat的不正確使用導致記憶體洩漏

乙個很弱智的錯誤

**如下:

_variant_t var(dblvalue);

cstring sout;

bstr bstrout = sout.allocsysstring();

::varformat(&var, l"0.#########", 0, 0, var_format_nosubstitute, &bstrout);

sout = bstrout;

::sysfreestring(bstrout);    

錯誤:varformat中的引數bstrout是由函式內部alloc的,不能在外部alloc,否則會有記憶體洩漏。

bstr bstrout = sout.allocsysstring();

改為bstr bstrout = null;

其實上述錯誤用bondcheck是可以定位錯誤的,但我在這份舊**裡一直沒有用bondcheck跑一次,

所以導致該問題跟蹤了兩天才查到錯誤。唉,看來以後改完**,一定要用bondcheck跑一次。

VarFormat的不正確使用導致記憶體洩漏

varformat的不正確使用導致記憶體洩漏 乙個很弱智的錯誤 如下 variant t var dblvalue cstring sout bstr bstrout sout.allocsysstring varformat var,l 0.0,0,var format nosubstitute,...

template 不正確的使用指標堆疊

假設定義了乙個正確的stacktemplate,乙個簡單的堆。三個容易出錯的範例 stackst 版本1 string po 替換為 char po 旨在使用char指標而不是string物件來接受鍵盤的輸入。這種方法失敗的原因是,char指標僅僅是建立了指標 4位元組大小 沒有非配任何用於儲存輸入...

C 輸入格式不正確

機房收費系統統計乙個操作員結賬情況時,對充值 退卡 收費進行求和查詢。報錯我的d層沒毛病的 是這樣寫的 sqlhelper.sqlhelper sqlhelper new sqlhelper.sqlhelper sqlparameter sqlparams1 string sql1 select s...