如何获取动态创建的内存的数组大小

use*_*930 2 c++ arrays

考虑一个例子:

void main()
{
    int *arr;
    arr=new int[10];
}
Run Code Online (Sandbox Code Playgroud)

我怎么知道arr的大小?

Fre*_*son 20

你必须自己跟踪它.我建议使用矢量或deque来让自己的生活更轻松.

  • "你必须自己跟踪它"的哪一部分尚不清楚?请至少假装努力拼写.现在大多数浏览器都会检查拼写. (7认同)
  • 你根本做不到.这是C和C++中数组的问题之一 - 他们不知道它们的大小. (3认同)
  • 我同意所有人的意见.此外,OP,元音不需要额外费用!我们这里不是推特或短信.请输入你的话,这样我们就可以弄明白你在说什么. (3认同)
  • 通过"你必须自己跟踪它",弗雷德的意思是:"你无法知道数组的大小".该语言不支持您. (2认同)

Pat*_*ick 7

两种方式(请注意,在第一个arr是ptr而不是int):

int main()
{
    const int SIZE = 10;
    int* arr;
    arr = new int[SIZE];

    delete[] arr;
}
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

int main()
{
     std::vector<int> arr( 10 );
     std::size_t size = arr.size();
}
Run Code Online (Sandbox Code Playgroud)