制作不必要的指针是否会明显使用更多资源,而不仅仅是使用对象本身?例如:
Enemy e1;
e1.attack();
vs
Enemy e1;
Enemy *ptr = &e1;
ptr->attack();
创建和使用指针会占用大量资源吗?还是创建一个指针使用的不是那么多,无论它是类指针还是整数指针?
答案 0 :(得分:4)
正如您所说的,使用指针是不必要的,我想您有一个用例,其中使用实际上并不是不必要的,但会带来一些好处。
您可以使用一个简单的示例来验证大多数编译器(我测试了GCC 5.1、9.0和clang 8.0,均使用x64)在访问时生成的代码完全相同(因此资源使用没有差异)物体: -直接 -通过指针 -通过引用
dataLayer
轻松地尝试不同的编译器和选项。
答案 1 :(得分:1)
指针内存占用的固定大小等于您的内存地址大小,例如对于64位计算机,为64位,请参见this question。它使用的内存量与它指向的值的大小/类型无关,无论是原始类型还是类。
也就是说,将值衰减到指针很容易出错,因为您可以使该指针无效并遭受无效的内存访问或undefined behavior。如果可以避免,为什么不呢?