创建指针会占用大量资源吗?

时间:2019-09-03 03:23:21

标签: c++

制作不必要的指针是否会明显使用更多资源,而不仅仅是使用对象本身?例如:

Enemy e1;
e1.attack();

vs

Enemy e1;
Enemy *ptr = &e1;
ptr->attack();

创建和使用指针会占用大量资源吗?还是创建一个指针使用的不是那么多,无论它是类指针还是整数指针?

2 个答案:

答案 0 :(得分:4)

正如您所说的,使用指针是不必要的,我想您有一个用例,其中使用实际上并不是不必要的,但会带来一些好处。

您可以使用一个简单的示例来验证大多数编译器(我测试了GCC 5.1、9.0和clang 8.0,均使用x64)在访问时生成的代码完全相同(因此资源使用没有差异)物体: -直接 -通过指针 -通过引用

dataLayer

您可以使用Godbold (includes example above)

轻松地尝试不同的编译器和选项。

答案 1 :(得分:1)

指针内存占用的固定大小等于您的内存地址大小,例如对于64位计算机,为64位,请参见this question。它使用的内存量与它指向的值的大小/类型无关,无论是原始类型还是类。

也就是说,将值衰减到指针很容易出错,因为您可以使该指针无效并遭受无效的内存访问或undefined behavior。如果可以避免,为什么不呢?

相关问题