在c ++中获取堆数组的大小

时间:2015-02-05 03:33:00

标签: c++ arrays heap

代码1:

int * a;
a=new int[222];
cout<<"the size of a is "<<sizeof(a)<<endl;

输出1:

the size of a is 8

代码2:

int * a;
a=new int[222];
cout<<"the size of a is "<<a.length()<<endl;

输出2:

error: member reference base type 'int *' is not a structure or
  union

如何获得堆数组的大小?感谢..

2 个答案:

答案 0 :(得分:5)

简短的回答是,它无法完成,至少不能以便携方式完成。您需要以某种方式单独跟踪数组的大小(例如,在整数变量或类似变量中)。

答案 1 :(得分:4)

使用容器而不是原始指针:

std::vector<int> a(222);
cout << "the size of a is " << a.size(); << endl;