在C ++中使用void *对struct进行内存分配

时间:2014-01-17 16:37:46

标签: c++ void-pointers

我想在C ++中对结构进行内存分配,如下所示。这样做很好:

m_temppkt = new pktstruct();

,结构是:

 struct pktstruct {
   void *address;
   int length;
   struct pktstruct *next;
 };

1 个答案:

答案 0 :(得分:1)

这样做很好,但m_temmkt->地址中的内存不会被分配(即你为指针分配空间,而不是指针指向的内存)。

最佳解决方案是使用构造函数初始化值:

struct pktstruct {
    void *address;
    int length;
    struct pktstruct *next;
    pktstruct(void* s, int l);
};

pktstruct::pktstruct(void* a, int l)
: address(a), length(l), next(NULL)
{
}

m_temppkt = new pktstruct(NULL, 0); // initializes with { NULL, 0, NULL }