作者Arim (Arim5566)
看板C_and_CPP
標題[問題] 動態配置的基本問題~
時間Fri Nov 20 21:56:41 2009
以下是我有問題的code
char *ptr=new char;
ptr[0]='a';
ptr[1]='b';
ptr[2]=NULL;
在這邊想問一下
我第一行系統會分配一塊可以放char資料的記憶體,使ptr指向它
可是為什麼我還可以用陣列的方式來儲存呢
不是只有分配一塊空間而已嗎
如果要用陣列的方式表示,第一行應該要寫char *ptr=new char[3];吧??
表示說分配三塊空間,使ptr指向第一塊空間吧??
這邊觀念可能有點模糊,請版友不吝指教 謝謝
--
~宅男的四個徵兆~
∠□ ○ ! * \○/ ★ (○ ?
╦╦└□ " ○□═ □ □>
║║√√ ╦══╦ ∥ |\
一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.200.202
→ james732:你不能這麼做 程式不會掛掉只是運氣好 11/20 22:07
→ abilitylife:C++不會檢查ptr指向的目標長度,如果會跑那只能說是 11/20 22:07
推 twotwoone:你開始瞭解的指標的威力了吧 11/20 22:07
→ abilitylife:原本要說的樓上說了XD 11/20 22:08
→ james732:這是C的強大 也是很容易寫錯的地方 XD (Java就會抓了) 11/20 22:09
→ Arim:所以正常寫法應該要寫第二種囉? 11/20 22:11
→ james732:Yes 11/20 22:12
推 twotwoone:去讀作業系統有關記憶體保護的描述,就知道前因後果 11/20 22:12
→ Knighter:資料結構有 11/21 10:45