与void*类型内存分配混淆?

the*_*ive 0 c++

我对C++编程缺乏经验,现在我正在尝试用dctmk制作一个小程序来修改dicom图像的像素数据.在阅读文档的过程中,我发现了一个c ++方法,我不太清楚.在DicomImage类的文档中,我发现了以下方法:

int DicomImage::getOutputData   (   void *      buffer,
        const unsigned long     size,
        const int   bits = 0,
        const unsigned long     frame = 0,
        const int   planar = 0   
    )
Run Code Online (Sandbox Code Playgroud)

我的困惑是关于buffer.它在链接中被引用为

buffer:指向内存缓冲区的指针(必须已经分配)

在这里我的困惑是我如何分配?我不确定如何分配一个void类型指针的内存.你能解释一下吗?谢谢.

Spo*_*ook 5

您可以通过以下方式执行此操作(例如):

void * mem = malloc(1024); // 1 kb

image.GetOutputData(mem, 1024);

// Don't forget to free(mem);
Run Code Online (Sandbox Code Playgroud)

其他方式:

char * mem = new char[1024];

image.GetOutputData((void *)mem, 1024);

// Don't forget to delete[] mem;
Run Code Online (Sandbox Code Playgroud)

其他方式:

char mem[1024];

image.GetOutputData((void *)&mem, 1024);
Run Code Online (Sandbox Code Playgroud)