C++使用new的問題

最近學校C++教到new的地方 有幾個問題不太懂 1. 一個用new創造出來的陣列,不管有多大,記憶體位置一定連續嗎? 2. 我想寫一個程式,有資料的新增、修改、刪除等功能 一開始架構是這樣的 int n,*p; cout << "輸入一開始資料個數:"; cin >> n; for(int i=0;i<n;i++){ p=new int; } 用new... 顯示更多 最近學校C++教到new的地方
有幾個問題不太懂



1.
一個用new創造出來的陣列,不管有多大,記憶體位置一定連續嗎?



2.
我想寫一個程式,有資料的新增、修改、刪除等功能
一開始架構是這樣的

int n,*p;
cout << "輸入一開始資料個數:";
cin >> n;
for(int i=0;i<n;i++){
p=new int;
}

用new int[n]這樣很難新增資料或刪除某一筆
所以我用for迴圈一個一個new
但是這樣new出來的記憶體不一定會連續
後來又想了一個方法,寫一個class

class int2
{
int a;
int *next;
};

然後迴圈裡面改成p=new int2,再用int2裡面的next指標把它們一個接一個串聯起來
但是這樣也好麻煩,而且記憶體使用變兩倍(a和*next)
假如要修改第五筆資料要寫
*p.next.next.next.next=5;






有沒有比較好的方法能提供給我
還請各位高手指教
更新: to:deepdish ( 研究生 5 級 )

第一題大概是懂了,意思應該是說
記憶體如果沒有足夠的大小可以連續,就會new不出來並且回傳NULL
更新 2: 第二題的程式只是表達一個想法,應該都不能執行= =

原本想說開始新增100筆資料,使用new一個int陣列,例如這樣
int *p=new int[100]

但是new完陣列後,假如要再新增3筆資料就會很困難,例如以下的超爛方法

save(p);  //儲存100筆資料
delete [] p;
p=new int[103];
load(p);  //讀取100筆資料,後面3筆空白



有沒有一個好一點的方法可以改善...
更新 3: 看完你的pdf檔學到蠻多的,以前沒學過malloc和free
4 個解答 4