有没有办法通过sizeof()计算指向矢量的大小?

RDG*_*ida 0 c++ pointers sizeof

即使我写这个声明

char *test= new char[35];
Run Code Online (Sandbox Code Playgroud)

sizeof(test)将始终返回4(或另一个数字,具体取决于系统)而不是35.我认为这是因为指针的大小严格来说是物理"指向实体"而不是为该指针保留的内存量.这是对的吗?

此外,有没有办法使用sizeof()检索为特定指针保留的内存量?

Que*_*tin 5

不.

指针只是普通变量(通常实现为整数地址) - 它们可以指向其他对象无关紧要sizeof.不要将它们视为"神奇"的东西,这在某种程度上与它们所指向的密切相关.指针只不过是一个街道号码.

我提出这个原因是因为:

[...]指针的大小严格来说是物理"指向实体",而不是为该指针保留的内存量.

在你的代码行中:

  • char在动态存储器中分配35 秒的数组
  • 它的第一个元素的地址由返回 new
  • 你保留这个地址test.

请注意,在第二步之前,阵列的任何概念或其大小都已消失.指针对此一无所知.知道的

如果要检索数组的大小,则需要在单独的变量中自行跟踪它,或者使用为您执行此操作的类,即std::vector<char>.