如何讓 C++ 和 C# 同樣易用,並且效率更高?

(未完成,待續。。)編碼

第一章:C++基本功spa

1. 養成良好的編碼習慣。調試

2. 堆上的資源隨用隨還,嚴格控制生命週期。code

 

第二章:一些調試心得blog

1. 在VisualStudio環境下,曾出現 Detected memory leaks!,調試好久,有以下心得:繼承

a. 能夠逐步簡化程序,確認問題點,同時使用 _CrtSetBreakAlloc(x) 輔助查找問題。生命週期

b. 使用 Borland 公司開發的 DevPartner,比較強大。內存

 

2. 一處 class 繼承 後的問題。資源

在 C#中,幾乎不用擔憂內存問題,而C++中則有些區別。開發

 1 class A
 2 {
 3 protected:
 4     int * p1;
 5 };
 6 
 7 class A1 : class A
 8 {
 9     A1()
10     {
11         p1 = new int[10];
12     }
13     ~A1()
14     {
15         delete [] p1;
16     }
17 };

以上代碼,可能會報 內存泄露的錯誤。好比按如下方式調用:

1 A * a = new A1();
2 delete a;

實際析構方式是: ~A(), 就截至了,並無調用 ~A1()。 這致使內存泄露。

因此:int * p1 是基類的成員,就應該有基類來釋放。子類想使用能夠,可是僅限於使用,不能擁有(即:構造、析構都不該該由它來管理)。

修改後的代碼以下:

class A
{
protected:
    int *     m_p1;
    
public:
    A(int p1_count)
    {
        m_p1 = new int[p1_count];
    }
    ~A()
    {
        delete [] p1;
    }
};

class A1 : class A
{
    A1() : A(10)
    {
    }
    ~A1()
    {
    }
};
相關文章
相關標籤/搜索