把一个单一元素的数组放在struct的最后,例如:
- #pragma pack(1)
- struct structDynamicArray
- {
- int nIndex;
- char szBufffer[1];
- };
- #pragma pack()
按如下的方法来使用这个结构,
- string strName = "pig";
- structDynamicArray *pArray =
- (struct structDynamicArray*) new char[sizeof(structDynamicArray) + strName.length() + 1];
- delete [] pArray;
- pArray = NULL;
通过上述方法可以实现一个动态的数组。这个小技巧在C里边很好用,而在C++中却成为了一个陷阱。
C++中有继承,有虚函数,这些在内存中的布局,是根据声明次序来确定的。基类和继承类的数据成员的顺序也没有强制规定。所以在C++中这种用法就不一定有效。