我是C++新手......我正在玩指針...... 此代碼使用char ptr作爲數組。C++指針製作數組
#include<iostream>
using namespace std;
int main(){
cout << "Playground "<<endl;
const short max=10;
char * str=new char ;
for (short i=0;i<max;i++)
*(str+i)=char(i+100);
for (short i=0;i<max;i++)
cout <<str+i<< char(3) <<endl;
for(short i=0;i<max;i++)
delete (str+i);
return 0;
}
但我不知道,如果刪除(STR + I)工作或沒有,爲什麼? 但我認爲這是行不通的,因爲我已經運行的程序很多次,雖然串印:
Playground
defghijklm
efghijklm
fghijklm
ghijklm
hijklm
ijklm
jklm
klm
lm
m
我有這樣的錯誤消息
try #0
*** Error in `./p': free(): invalid pointer: 0x09d90009 ***
Aborted (core dumped)
try #1
*** Error in `./p': free(): invalid pointer: 0x08453009 ***
Aborted (core dumped)
try #2
*** Error in `./p': free(): invalid pointer: 0x0863c009 ***
Aborted (core dumped)
etc ...
由於無效的指針不斷變化,我有感覺,物體沒有被刪除或垃圾收集,每次我運行的代碼我使用另一個區域的內存...
最後,我開始得到爲什麼常規數組更好...
*從一開始就在一個連續的內存空間保留給
*並不需要擔心刪除數據
...這些只是我的猜測......
'delete(str)'將釋放在原始地址分配的內存。添加'i'會導致指針無效。 –
你可能想看看'str'的'string'有多大。 '新char'究竟放在那裏?它是一個足夠大的字符串?如果是這樣,編譯器如何知道它有多大?也許它只在那裏放置一個'char',在這種情況下,其餘的字符去哪裏? –