指针是否发生在内存中

Does pointers take place in memory?

本文关键字:内存 是否 指针      更新时间:2023-10-16

Hell'o,我有一个成员可验证的类,它是指针。如果我在没有初始化成员指针的情况下创建此类的实例(指向一些内存或 null - 无论如何(,这个指针会发生在内存中吗?例如 - 我要创建按钮实例,但用户可以决定它在单击时有声音效果,或者没有 - 所以按钮类不应该为声音保留内存(如果用户选择了它(。

它将为指针本身保留内存,但不为指针指向的对象保留内存。

在这种情况下,您应该在对象的构造函数中为指针分配 nullptr 的值(如果您使用 C++03 或更早版本,则为 NULL(,尽管我会考虑更改设计,以便这是不必要的(例如,有两个类用于带声音的按钮和没有声音的按钮,并使用某种形式的继承(。分配nullptr是一个方便的值,用于检查指针是否实际指向任何内容,并且在现代桌面系统上,如果您错误地访问它,也更有可能崩溃(尽管它实际上并不能保证它(。崩溃比你的程序做一些奇怪和意外的事情要好,这可能涉及损坏数据,这将需要你永远追踪!

指针本身占用的空间将非常小(在 64 位 Intel 架构上可能是 8 个字节,但这当然不能保证(。

在低级别,C 中的指针实际上是一个整数。编译器只允许您对它们执行比使用整数更多的操作,但您可以将指针强制转换为整数,反之亦然。

所以,是的,你的指针占用内存空间(整数的大小,32 位上可能是 4 个字节,64 位上可能是 8 个字节(。

如果你不喜欢这样,你应该找到一个不同的设计。