打印

关于dynamic allocate memory的问题

关于dynamic allocate memory的问题

dynamic allocate memory的好处之一在于可以在runtime分配array的长度.但是我试了一下不用dynamic allocate,也可以在runtime分配长度.很奇怪. 下面的代码没有什么问题.

#include <iostream>
using namespace std;

int main(){
cout << "How many variables do you want? ";   
int nVars;   
cin >> nVars;   
  
int anArray[nVars];
   
return 0;
}

TOP

我是c++初学者,问题可能太简单,还是希望高手赐教。

TOP

静态分配数组不能使用变量,你需要动态分配
#include <iostream>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

int main(){
cout << "How many variables do you want? ";
int nVars;
cin >> nVars;

int* nVars=(int*)malloc(sizeof(int)*nVars);
if(!nVars)
{
cout << "Unable to allocate memory"<<endl;
return ENOMEM;
}
//do something here

//end do something here
free(nVars);
nVars=NULL;
return 0;
}

[ 本帖最后由 wangzhonnew 于 2007-12-11 22:36 编辑 ]

TOP

请问wangzhonnew斑竹,我写的那段代码在编译时会出错吗?

TOP

感觉   []   不是随便用的

TOP

会出错,因为c不允许你再静态分配内存的时候使用变量。使用[]只接受常量的

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-9-6 05:11 京ICP证060528 号

Designed By 17DST