C++數(shù)組問(wèn)題不知出在哪?
#include<iostream>
using namespace std;
void create(int *,int);
int main()
{
int*a=NULL;
int len;
cin>>len;
create(a,len);
for(int i=0;i<len;i++)
cout<<a<<" ";
cout<<endl;
delete []a;
a=NULL;
return 0;
}
void create(int *ap,int n)
{
ap=new int[n];
for(int i=0;i<n;i++) ap=i;
}
麻煩大神看看什么漏了或錯(cuò)了,謝謝!
返回小木蟲(chóng)查看更多
今日熱帖
京公網(wǎng)安備 11010802022153號(hào)
你編譯出了什么錯(cuò)誤?你想得到什么結(jié)果呢?麻煩說(shuō)清楚一點(diǎn)。感覺(jué)是你傳參數(shù)有問(wèn)題,你應(yīng)該在函數(shù)內(nèi)釋放空間,否則可能導(dǎo)致內(nèi)存泄露,你在main函數(shù)內(nèi)的a和函數(shù)中的ap不是同一個(gè)指針,ap應(yīng)該是a在函數(shù)內(nèi)的拷貝,你是用ap去申請(qǐng)的空間,而a沒(méi)有申請(qǐng)空間,creat函數(shù)結(jié)束,ap的生命周期也結(jié)束了,ap卻被銷毀了,而它申請(qǐng)的堆空間沒(méi)被釋放,導(dǎo)致內(nèi)存泄露。
可以試試用引用加指針試試。
for(int i=0;i<n;i++) ap=i;
你這個(gè)只是給第一個(gè)地址里賦值了,而指針沒(méi)有移動(dòng),后面的空間里都沒(méi)有賦值呀
主要是這代碼運(yùn)行時(shí)會(huì)彈出框框說(shuō)這程序停止運(yùn)行了,好像是數(shù)組一開(kāi)始沒(méi)分配空間!
那里是我弄錯(cuò)了,應(yīng)該是ap=i,真正要找的錯(cuò)誤不在這里
怎樣弄,不懂!
弄出來(lái)了,在create(int *ap,int)改成create(int *&ap,int),只是在以前看到這樣用取址符,還不知道這樣關(guān)聯(lián)地址的分配
,