指针是否在内存中发生?

时间:2016-11-15 13:18:57

标签: c++ pointers

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

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:0)

在低级别,C中的指针实际上是一个整数。编译器只允许你使用整数做更多的事情,但你可以将指针转换为整数,反之亦然。

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

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