c 記憶體管理

2021-07-07 05:55:13 字數 1585 閱讀 1918

這裡介紹幾種重用的記憶體管理方法。

這也是最常用的一種記憶體管理方式,例如osg、openinventer等等。

網上面管理這方面的例子有很多,這裡就不再講解。

這種方法是基於malloc/free方法來管理記憶體。

優點在於

cheapoperators類分配的記憶體位址儲存在乙個vector中,程式結束可以保證記憶體釋放。

malloc/free方法不會自動呼叫類的析構函式,這樣管理記憶體更加清晰。

適合小型專案的載入使用。

#include #undef new

#undef delete

class cheapoperators

;

#include #include #include std::vectorheapv;               //可以使用list等其他容器,目的是記錄記憶體指標

void* cheapoperators::operator new( size_t size )

void cheapoperators::operator delete( void * ptr )

free(ptr);

}

//測試類
class cmemtest : public cheapoperators
~cmemtest()
private:
double *pval;
};

智慧型指標有什麼中,這裡只是介紹其中的幾種。

下面介紹的智慧型指標實際上就是乙個過載了操作符 -> 的類。智慧型介面指標類包含指向另外乙個物件的指標。當使用者呼叫智慧型指標上的 -> 操作符時,

智慧型指標把此呼叫**給它所包含的指標所指的物件。

class ctemp                     //臨時類

;class autopter

~autopter( )

ctemp *operator ->()

private:

ctemp *m_p;

};//使用方法,乙個例子

void fun(ctemp *p)

上述的智慧型指標最妙之處可能在於我們無需記住去呼叫delete。函式執行完畢後,會自動呼叫析構函式。

當然這只是乙個簡單的例子,可根據不同的需要對其進行適當修改。

下面介紹的智慧型指標,是基於引用計數機制上編寫的。 這裡同osg中的 ref_ptr 類似。

**是摘自com中的。

template class ccomptrbase

ccomptrbase(_inout_opt_ t* lp) throw()

public:

typedef t _ptrclass;

~ccomptrbase() throw()

// release the inte***ce and set to null

void release() throw()

}}

C 記憶體管理 C 記憶體分類

c 記憶體管理 記憶體分類 moakap 在編寫程式過程中,程式設計師必須清楚程式記憶體的分配機制,合理進行記憶體管理,這樣才能得到高效的程式。同時,如果對c 記憶體分配基本概念不理解,使用不當,一方面浪費了寶貴的記憶體資源,降低了程式執行效率,另一方面還會造成程式中意想不到的錯誤。在 c 程式中,...

C 記憶體管理

在嵌入式系統中使用c 的乙個常見問題是記憶體分配,即對new 和 delete 操作符的失控。具有諷刺意味的是,問題的根源卻是c 對記憶體的管理非常的容易而且安全。具體地說,當乙個物件被消除時,它的析構函式能夠安全的釋放所分配的記憶體。這當然是個好事情,但是這種使用的簡單性使得程式設計師們過度使用n...

c 記憶體管理

這裡對我暫時所了解的記憶體機制做個記錄,以後再補。首先是記憶體分配 記憶體主要分為3個部分 一是從靜態儲存區域分配。編譯時分配好,主要存放全域性變數,static變數,程式結束釋放。二是從堆疊區域分配。函式內區域性變數存放的地方。隨變數生命週期自動釋放。效率較高,但大小有限。三是從記憶體池分配,即從...