先把結論放上來:
c++在new時的初始化的規律可能為:對於有建構函式的類,不論有沒有括號,都用建構函式進行初始化;如果沒有建構函式,則不加括號的new只分配記憶體空間,不進行記憶體的初始化,而加了括號的new會在分配記憶體的同時初始化為0。
以下**:
#include
using namespace std;
int main()
delete a;
int *b=new int[1000];
for(int i=0;i<100;i++)
delete a;
int *b=new int[1000]();
for(int i=0;i<100;i++);
};main函式中使用語句:
a *b=new a;
cout但是,如果吧a的建構函式刪掉,則兩個語句輸出的結果分別是:隨機數,0。
由此可見,c++在new時的初始化的規律可能為:對於有建構函式的類,不論有沒有括號,都用建構函式進行初始化;如果沒有建構函式,則不加括號的new只分配記憶體空間,不進行記憶體的初始化,而加了括號的new會在分配記憶體的同時初始化為0。
指標初始化對記憶體訪問的影響
空指標的使用可能造成錯誤,指標初始化的時候未賦初值而造成的野指標的錯誤更加可怕。前段時間在重寫opencv lk金字塔光流迭代演算法 cvcalcopticalflowpyrlk 函式 的時候,對初始化在程式中的重要作用有了更加深入的認識。程式的具體問題如下,在處理比較小的的時候,直接執行會發生錯誤...
C 中new是否進行初始化的問題
c 在new時的初始化的規律可能為 對於有建構函式的類,不論有沒有括號,都用建構函式進行初始化 如果沒有建構函式,則不加括號的new只分配記憶體空間,不進行記憶體的初始化,而加了括號的new會在分配記憶體的同時初始化為0。以下 include using namespace std int main...
c專家程式設計 對記憶體的思考
1 intel 80x86系列處理器的發展歷程 4008 8008 8080 8085 8086 80186 80286 80386 80486 pentium 32 2 記憶體模型以及它的工作原理 段的含義 一塊64kb的記憶體區域,有乙個段暫存器所指向。記憶體位址的形成 取得暫存器的值,左移4位...