It is fine to do that, but the memory in m_temmkt->address will not be allocated (i.e. you allocate space for the pointer, not for the memory the pointer will point to).
The best solution is to initialize the values using a constructor:
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 }