寫程式中常遇到的Bug3

2021-06-21 06:27:46 字數 2912 閱讀 2603

一、delete 問題

class a{};

void testdelete()

int _tmain(int argc, _tchar* argv)

二、標頭檔案包含 + 類宣告 + 類繼承 + 類互相指向對方 問題

參考設計模式之狀態模式

三、設計模板類,類的定義和實現必須在同一檔案,如果在.h檔案中定義,在.cpp檔案中實現,要使用export關鍵字。

參考設計模式之抽象工廠模式

四、全域性變數使用注意

1、型別在標頭檔案定義

2、變數在在.cpp檔案中定義

3、其他檔案使用,要先宣告一下

五、sprintf使用注意 格式中變數的型別必須是基本型別,如果不是,必須先轉換

ptime->tm_year = it->time.nyear - 1900;

ptime->tm_mon = it->time.nmonth - 1;

ptime->tm_mday = it->time.nday;

ptime->tm_hour = it->time.nhour;

ptime->tm_min = it->time.nmin;

ptime->tm_sec = (int)(it->nmillisec * 0.001);

/*time_t*/long nseconds = (long)mktime(ptime);

memset(sendprice.szdata, 0, sizeof(sendprice.szdata));

sprintf(sendprice.szdata, "agk %ld %.2lf 4000.00 4000.00 4000.00 4000.00", nseconds, it->lfprice);

六、使用多個有繼承關係的動態庫,在"stdafx.h"預編譯頭中包含動態庫的標頭檔案時要先包含基類的,再包含子類的。

#include //#include //派生類動態庫的標頭檔案必須寫在子類的動態庫的標頭檔案之後

#include using namespace pushframework;

#include #include #include #include #include using namespace google;

#include using namespace transactionmessage;

#include

七、堆疊溢位

錯誤:

int ntotallength = 0;

if (littleendian())

else

正確

int ntotallength = 0;

if (littleendian())

else

八、程式中通過動態庫/靜態庫的全域性物件呼叫該物件的成員函式

#pragma once

#include #include "symbos.h"

namespace pushframework

private:

int m_socket;

}; // 在主程式中呼叫動態庫的全域性變數的函式,必須做pushframework_dll宣告

//extern /*pushframework_dll*/ abstractdistributor g_clientfactory;

extern pushframework_dll abstractdistributor g_clientfactory;

}

九、帶引數的建構函式的類的的全域性物件的定義和宣告

定義:

circularqueueg_listservices(500000);

circularqueueg_listagents(500000);

宣告:

extern circularqueueg_listservices;

extern circularqueueg_listagents;

十、取string型別字串的長度

int ntotallength = strlen(szclass) + /*strlen(strpacket.c_str())*/strpacket.length() + 2;

十一、vs2013自身的bug release版本和debug版本問題,工程較大時,執行應該用release版本,除錯看變數值應該用debug版本。

在寫客戶端命令派發機制時遇到過這樣一種情況,debug版本能編譯通過,但執行發生指標指向錯誤,但release版本卻沒問題。

research\serverframe\push_framework\component\component\commanddispatch

在寫protobuf通訊協議時又遇到過一次

十二、使用開源**chartctrl時,報錯:不允許指標指向不完整的類型別

在其他標頭檔案中宣告了該類,並且是其他類的友元函式,但是沒有包含該類的標頭檔案。

void ccharttutorialdlg::income_over_2008()函式

#include "chartaxislabel.h"

#include "chartbarserie.h"

十三、const成員函式只能呼叫const成員函式,非const成員函式既可以呼叫非const成員函式,又可以呼叫const成員函式。

十四、c++標頭檔案中的全域性函式

在c++工程中,全域性函式的定義和實現要分開,否則會報重定義之類的很奇怪的錯誤,這個問題曾經折騰我乙個上午!

寫記事本程式遇到的檔案Bug

file.open szfile,cfile modecreate cfile modewrite cfile typetext cfile modereadwrite cfile modecreate 直接構建建立乙個新檔案。如果該檔案已經存在,則檔案內容自動被清零。cfile modewrite...

寫MFC程式過程中的BUG記錄

關於 wdir 轉 string wdir patt wstring ws patt wchar轉char string str ws.begin ws.end 2.assert valid fails with null pointer 錯誤 原因 此錯誤是由於使用了乙個未經初始化的指標導致。由來...

iview 3 x 使用中遇到的元件bug

1.inputnumber 數字框元件,把最小值設定為0.2時,陣列框禁止點選,其他數字都是正常,官方例子同樣存在問題 2.tree 元件將節點的disablecheckbox屬性設定為true時,反覆點選核取方塊會被勾選,官方例子同樣存在問題 目前我的解決辦法是修改了元件的源 1 handlech...