读书人

能否在已分配未构造的内存中直接使用类

发布时间: 2012-03-29 12:53:13 作者: rapoo

能否在已分配未构造的内存中直接使用类的数据成员?
rt...本来觉得答案肯定是否定的,但是看到C++ Primer第四版18.1.7实现的CachedObj类:



其中add_to_freelist直接对未构造的内存进行使用……很奇怪对一个不存在的对象的成员进行操作为什么不会引起问题?

[解决办法]
内存都分配了,又没有别的进程跟它抢内存,淡然可以用了,只不过所有数据成员都没有初始化,值未定义而已
[解决办法]

探讨
引用:

这里的意思维护一个空闲内存链表,如果没有了空闲的,就重新分配一组,然后返回首个,对象然后在这个内存块中构建对象,delete后的内存块重新加入到空闲链表中

这句已经说了: return p; // constructor of T will construct the T part of the object



这点我明白。。。但即使是作为基类的CacheObj在这时也没有构造啊,next是它的成员,也是未经构造直接使用了啊……我只是不理解为…

读书人网 >C++

热点推荐