如何在C ++中获取动态分配的int数组的大小

时间:2012-08-30 12:20:01

标签: c++ arrays size

如何在C ++中获取动态分配的int数组的大小?

示例:( /这将总是给4作为4 * 8 = 32位,它的大小为int)

bool tabSum(int* t, int& p, int& np){
   cout<<"\n\n";
   cout<<sizeof(*t)<<endl;
}

3 个答案:

答案 0 :(得分:7)

你不能,当作为参数传递时,数组会衰减为指针。 sizeof是一个编译时运算符。

我建议您改用std::vector

答案 1 :(得分:4)

这是不可能的。

使用指针作为参数并期望它是一个数组的每个敏感函数都将总是采用表示元素数量的第二个参数。

STL中使用的另一种方法是使用指针超过数组中最后一项作为结束边界。 STL迭代器使用begin()和end()方法抽象这种方法。 此方法还消除了对单独的数字数据类型(如size_t。

)的需要

此规则的一个值得注意的例外是字符串函数需要NULL终止字符串,尽管这种特定方法容易出现安全问题,并且使用std :: string类作为首选方法。

答案 2 :(得分:0)

你不能这样做。 正如其他用途已经提到的那样,将长度保存在一个额外的变量中,或者编写你自己的malloc / realloc类,它可能是一个小帮手,并为你追踪它们。