指针是否发生在内存中
Does pointers take place in memory?
Hell'o,我有一个成员可验证的类,它是指针。如果我在没有初始化成员指针的情况下创建此类的实例(指向一些内存或 null - 无论如何(,这个指针会发生在内存中吗?例如 - 我要创建按钮实例,但用户可以决定它在单击时有声音效果,或者没有 - 所以按钮类不应该为声音保留内存(如果用户选择了它(。
它将为指针本身保留内存,但不为指针指向的对象保留内存。
在这种情况下,您应该在对象的构造函数中为指针分配 nullptr
的值(如果您使用 C++03 或更早版本,则为 NULL
(,尽管我会考虑更改设计,以便这是不必要的(例如,有两个类用于带声音的按钮和没有声音的按钮,并使用某种形式的继承(。分配nullptr
是一个方便的值,用于检查指针是否实际指向任何内容,并且在现代桌面系统上,如果您错误地访问它,也更有可能崩溃(尽管它实际上并不能保证它(。崩溃比你的程序做一些奇怪和意外的事情要好,这可能涉及损坏数据,这将需要你永远追踪!
指针本身占用的空间将非常小(在 64 位 Intel 架构上可能是 8 个字节,但这当然不能保证(。
在低级别,C 中的指针实际上是一个整数。编译器只允许您对它们执行比使用整数更多的操作,但您可以将指针强制转换为整数,反之亦然。
所以,是的,你的指针占用内存空间(整数的大小,32 位上可能是 4 个字节,64 位上可能是 8 个字节(。
如果你不喜欢这样,你应该找到一个不同的设计。
相关文章:
- 我在 IDA 或 dbg 或 olly 上看到的内存是否与我在 RAM 上实时加载的内存相同?
- 访问"std::vector"的保留但未调整大小的内存作为原始内存是否安全?
- 本地分配的内存是否可以用于将来使用?
- 多次分配内存是否一次性需要更多时间?
- 删除矢量的尾部(通过擦除)内存是否有效
- 如何找出内存是否属于堆或堆栈
- C++:提升:托管共享内存是否需要信号量锁
- 在 C/C++ 中在特定地址边界上对齐内存是否仍能提高 x86 性能?
- 检查内存是否在堆上
- C++内存 - 是否需要删除使用 'new' 创建的基元类型变量?
- 如果通过委托给“malloc”的重载“new[]”分配,“释放”内存是否安全
- 分配给 cpp 中定义的全局静态变量的内存是否在 C++ 中删除其类的实例后释放
- 我的 265GB RAM 笔记本电脑上的内存是否超过 8GB
- 在动态内存分配中,在程序终止并且忘记释放内存后,该内存是否保持分配状态
- 这些二维数组(C++)的内存是否不足
- 如果我在 for 中声明一个对象,它的内存是否会在那之后被释放?
- 二进制搜索树(如何在插入时检查内存是否不足)
- 用new重新分配内存是否安全
- 在构造函数初始化列表中分配内存是否存在任何问题
- 内存映射内存是否可能