c++ - 如何使用 new 过度分配内存以在结构中分配变量?

标签 c++ dynamic structure new-operator allocation

所以我有几个结构...

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/

相关文章:

c++ - 测试双向链表是否形成等差级数

c++ - 如何使用 gotoxy 函数代替 clrscr

c# - 你如何在 C# 中进行动态脚本评估?

php 升级到 5.4(动态下拉菜单不起作用)

c++ - 如何访问在当前函数范围之外创建的动态创建的对象?

c++ - 从 matlab 中的二进制文件读取 float 不正确

c++ - 使用 std::wstring 初始化结构

c - 结构指针和结构指针成员的区别

c++ - 用于处理用户定义的类型和结构的模板

整数除法余数的 C++ 确定性