2014-01-17 157 views
0

我想在C++中進行如下內存分配。它是細做它喜歡:在C++中用void *分配內存結構內存分配

m_temppkt = new pktstruct(); 

和結構是:

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

是的,這是完全正常的。你到底在問什麼? –

+1

假設'm_temppkt'的類型是'pktstruct *',是的。 – Nabla

+0

你試過了嗎..?它工作..? – Sean

回答

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 }