代碼如下:
但是現(xiàn)在問題來了,本來我在ppJobs里面只new 了2個元素8*2個字節(jié),但是,當我delete ppJobs時卻刪除了8*8 個字節(jié)。如圖:
紅色改變的部分是我調(diào)用 delete [ ] ppJobs;時改變的內(nèi)存, 實際上它只需要修改8*2個字節(jié)就可以了,很明顯, 刪除的內(nèi)存越界了。
接著_ASSERTE( _CrtCheckMemory( ) );中斷。
暫時還沒有找到好地解決辦法。。。
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
int
?i?
=
?
0
,?j?
=
?
0
;
????CJob ** ?ppJobs? = ?NULL;
???? try
????{
???????? int ?nCount? = ?m_xlist.CountCheckedItems( 0 );
???????? if ?(nCount)
????????{
????????????ppJobs? = ? new ?CJob * [nCount];
???????????? for ?(;?i? < ?m_xlist.GetItemCount();?i ++ )???? // ?record?all?cancel?jobs
????????????{
???????????????? if ?(m_xlist.GetCheckbox(i,? 0 )? == ?TRUE)
????????????????{
????????????????????CJob * ?pJob? = ?reinterpret_cast < CJob *> (m_xlist.GetItemData(i));?
????????????????????ppJobs[j]? = ?pJob;?
????????????????????j ++ ;
????????????????}
????????????}
???????????? for ?(;?j? > ? 0 ;?j -- )???????????? // ?cancel?jobs?from?array
????????????{
????????????????ppJobs[j - 1 ] -> Cancel();
????????????}
????????????
????????????delete [ ] ppJobs;
??????????? pJobs?=?NULL;
????????}
????}
???? catch (
){}
_ASSERTE( _CrtCheckMemory( ) );
做的操作非常的簡單,就是把一些CJob類的指針先放到
ppJobs 數(shù)組里,然后對CJob做一個cancel的操作,最后釋放數(shù)組。
????CJob ** ?ppJobs? = ?NULL;
???? try
????{
???????? int ?nCount? = ?m_xlist.CountCheckedItems( 0 );
???????? if ?(nCount)
????????{
????????????ppJobs? = ? new ?CJob * [nCount];
???????????? for ?(;?i? < ?m_xlist.GetItemCount();?i ++ )???? // ?record?all?cancel?jobs
????????????{
???????????????? if ?(m_xlist.GetCheckbox(i,? 0 )? == ?TRUE)
????????????????{
????????????????????CJob * ?pJob? = ?reinterpret_cast < CJob *> (m_xlist.GetItemData(i));?
????????????????????ppJobs[j]? = ?pJob;?
????????????????????j ++ ;
????????????????}
????????????}
???????????? for ?(;?j? > ? 0 ;?j -- )???????????? // ?cancel?jobs?from?array
????????????{
????????????????ppJobs[j - 1 ] -> Cancel();
????????????}
????????????
????????????delete [ ] ppJobs;
??????????? pJobs?=?NULL;
????????}
????}
???? catch (

_ASSERTE( _CrtCheckMemory( ) );
但是現(xiàn)在問題來了,本來我在ppJobs里面只new 了2個元素8*2個字節(jié),但是,當我delete ppJobs時卻刪除了8*8 個字節(jié)。如圖:

紅色改變的部分是我調(diào)用 delete [ ] ppJobs;時改變的內(nèi)存, 實際上它只需要修改8*2個字節(jié)就可以了,很明顯, 刪除的內(nèi)存越界了。
接著_ASSERTE( _CrtCheckMemory( ) );中斷。
暫時還沒有找到好地解決辦法。。。
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
