c 程式設計問題

2022-07-20 10:10:02 字數 1242 閱讀 5098

1樓:匿名使用者

這應該是為檢測記憶體洩露而用到的。

#ifdef _debug //如果定義了_debug,即處於debug模式下

#define new debug_new //就用debug_new替代所有的new。這裡的debug_new估計是重寫後的new,每次使用它申請記憶體空間,它都會記錄下來。當軟體執行結束,它自動檢查是不是所有申請的空間都已被釋放,以此來檢測記憶體洩露。

#undef this_file //取消對this_file 的定義。這一步是為了防止曾經定義了this_file,從而導致後面一條語句有歧義。

static char this_file = __file__; //宣告新的靜態字元型陣列變數this_file。__file__應該是個巨集

#endif //結束

2樓:

debug_new在檔案中定義為

#define debug_new new(this_file, __line__)

#define new debug_new

說明:幫助查詢記憶體錯誤。使用者在程式中使用debug_new,使用者通常使用new運算子來從堆上分配。在debug模式下(但定義了乙個debug符號),debug_new為它分配的每個物件記錄檔名和行號。

然後,在使用者使用cmemorystate::dumpallobjectsince成員函式時,每個以debug_new分配的物件分配的地方顯示出檔名和行號。 為了使用debug_new,應在使用者的資源檔案中插入以下指令:

#define new debug_new 一旦使用者插入本指令,預處理程式將在使用new的地方插入debug_new,而mfc作其餘的工作。但使用者編譯自己的程式的乙個發行版時,debug_new便進行簡單的new操作,而且不產生檔名和行號訊息。

#ifdef _debug //如果定義了_debug,也就是除錯版程式,則執行以下三句

#define new debug_new //定義new為debug_new

#undef this_file //取消以前對this_file的定義

static char this_file = __file__; //宣告並初始化this_fileo陣列,資料的初始資料為該檔案的檔名

#endif

__file__ 就是當前原始檔的名稱

c語言程式設計問題,c語言程式設計問題?

include int main int i,n double sum 0 scanf d n for i 1 i n i sum i i 1.0 i 1 printf f n sum return 0 include void main c語言程式設計問題 解題思bai路 完全跟百錢買百雞的問題是...

C語言程式設計問題,c語言程式設計問題

先判斷括號中的真假,a是先將a自減1,得到值0,然後b 的意思是取得b的值和 a判斷後才將b 1,括號中的表示式為真,所以x的值是 a,因為已經將a自減1了,此時再減1得到 1,賦給x。將a的值賦給y,然後a 1,所以y的值也是 1,在 a b 因為已經將b 1了,所以z的值為1.i 是執行前 1 ...

c語言程式設計,求兔子問題,c語言程式設計問題

因為只有6年,定義乙個陣列儲存第n年各歲兔子的數量 include int sum int n return a 0 a 1 a 2 a 3 a 4 a 5 void main 壽命是6年,也就是還是要掛掉的。遞迴光加了,沒有考慮死掉的哦 include include void main if r...