int main()
{
int *ptr = new int(5);
delete ptr;
// ptr становится висячим указателем.
std::cout << sizeof(ptr);
// у меня выводит 4 байта.
//
... какие-то действия в коде
//
}
我声明了一个指针,它在我的内存中占用 4 个字节,在正文开头的某个地方删除它(据我所知,删除只是释放指针所在的内存),指针本身会发生什么?为什么它仍然占用一些内存?毕竟,如果我创建一百个指针,删除它们,它们仍然会占用一些空间,这会影响我的程序的速度。
你不对。
释放指向 的内存
ptr,但不释放变量占用的空间ptr。sizeof(ptr)只告诉变量占用了多少内存空间,并且不以任何方式依赖于它的值。即使是一百个指针也不太可能影响程序的速度,但分配/释放通过-可以
new/delete。从处理器时间的角度来看,分配和释放的过程相当冗长。