miz*_*sho 2 c++ memory-management new-operator
我有一个关于对象的不同版本,它们的大小和分配的问题.该平台是Solaris 8(及更高版本).
假设我们有程序A,B和C都链接到共享库D.一些类在库D中定义,我们称之为'classD',并假设大小为100字节.现在,我们想为classD添加一些成员用于下一版本的程序A,而不会影响现有的二进制文件B或C.新的大小将是120字节.我们希望程序A使用classD的新定义(120字节),而程序B和C继续使用classD的旧定义(100字节).A,B和C都使用运算符"new"来创建D的实例.
问题是,运营商"new"何时知道要分配的内存量?编译时间或运行时间?我担心的一件事是,程序B和C期望classD为100字节,而新的共享库D需要120字节用于classD,如果我将它们与程序B和C链接,这种不一致可能会导致程序B和C中的内存损坏新的库D.换句话说,新的classD所需的额外20个字节的区域可以通过程序B和C分配给一些其他变量.这个假设是正确的吗?
谢谢你的帮助.