1. 程式人生 > >深度探索C++物件模型第六章 執行其語義學

深度探索C++物件模型第六章 執行其語義學

物件陣列:編譯器呼叫一個寧為vec_new()的函式,產生出以class object物件構造而成的陣列。
void * vec_new(void * array,      //  陣列的起始地址
               size_t elem_size,  //  每個class object的大小
               int elem_cout,     //  陣列元素的個數
               void (* construcotr) (void*) ,  // default constructor 的函式指標
               void (* destructor) (void * , char) // default destructor的函式指標
引數array帶有的若不是具名陣列的地址,就是0。如果時0 ,那麼陣列江經由應用程式的new運算子,被動態配置於heap中! 載vec_new被呼叫的過程中,會存放相應的cokkie,儲存次記憶體塊的元素個數。注意:是元素個數,而不是整個陣列的大笑。因此使用base pointer釋放 derived pointer會引起記憶體洩漏噢!
point knowts[10];  --->vec_new(&knots,sizeof(point),10,&point::point,0)
point knowts[10]={ point(),point(1,2,3) } -->point::point (&knots[0] );
                                             point::point (&knots[1] );
                                             vec_new(&&knowts+3*sizeof(point) , sizeof(point), 7,&point::point ,0)