所以我有几个结构...
struct myBaseStruct
{
};
struct myDerivedStruct : public myBaseStruct
{
int a, b, c, d;
unsigned char* ident;
};
myDerivedStruct* pNewStruct;
...我想动态分配足够的空间,以便我可以在一些数据中“memcpy”,包括一个以零结尾的字符串。基本结构的大小显然是“1”(我假设是因为它不能为零),派生结构的大小是 20,这似乎是有意义的 (5 x 4)。
所以,我有一个大小为 29 的数据缓冲区,前 16 个字节是整数,其余 13 个字节是字符串。
如何为 pNewStruct 分配足够的内存以便有足够的空间用于字符串?理想情况下,我只想去:
- 在 pNewStruct 分配 29 个字节;
- 从缓冲区 memcpy 到 pNewStruct;
谢谢,
最佳答案
您返回到 C 或放弃这些想法并按预期实际使用 C++。
- 使用构造函数分配内存,使用析构函数删除内存。
- 不要让其他代码写入您的内存空间,创建一个函数来确保分配内存。
- 使用 std:string 或 std::vector 来保存数据,而不是滚动您自己的容器类。
理想情况下你应该说:
myDerivedClass* foo = new myDerivedClass(a, b, c, d, ident);
关于c++ - 如何使用 new 过度分配内存以在结构中分配变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1918385/