RDG*_*ida 0 c++ pointers sizeof
即使我写这个声明
char *test= new char[35];
Run Code Online (Sandbox Code Playgroud)
sizeof(test)将始终返回4(或另一个数字,具体取决于系统)而不是35.我认为这是因为指针的大小严格来说是物理"指向实体"而不是为该指针保留的内存量.这是对的吗?
此外,有没有办法使用sizeof()检索为特定指针保留的内存量?
不.
指针只是普通变量(通常实现为整数地址) - 它们可以指向其他对象无关紧要sizeof.不要将它们视为"神奇"的东西,这在某种程度上与它们所指向的密切相关.指针只不过是一个街道号码.
我提出这个原因是因为:
[...]指针的大小严格来说是物理"指向实体",而不是为该指针保留的内存量.
在你的代码行中:
char在动态存储器中分配35 秒的数组newtest.请注意,在第二步之前,阵列的任何概念或其大小都已消失.指针对此一无所知.你知道的
如果要检索数组的大小,则需要在单独的变量中自行跟踪它,或者使用为您执行此操作的类,即std::vector<char>.