问题如下:
编写了一个动态库,里面有个函数Data(PVOID source,PVOID result),source 是需要处理的源数据,结构体类型的,而result是处理后的结果!在主程序中,需要多线程处理数据,有一 Explain(PVOID res),当接受到一个数据包的时候,则启动一个Explain线程,如果再接受到一个数据包,则再启动一个Explain线程。在Explain线程里面,需要调用Data函数来对数据进行处理!核心问题:1。在Data中,可以为res动态分配内存么?如果可以,那怎么样释放呢?2。如果不可以,那可以在Data中临时创建个内存区,然后将内存区中的数据拷贝到res指向的空间中,怎么样拷贝?memcpy?有什么需要注意的地方呢
编写了一个动态库,里面有个函数Data(PVOID source,PVOID result),source 是需要处理的源数据,结构体类型的,而result是处理后的结果!在主程序中,需要多线程处理数据,有一 Explain(PVOID res),当接受到一个数据包的时候,则启动一个Explain线程,如果再接受到一个数据包,则再启动一个Explain线程。在Explain线程里面,需要调用Data函数来对数据进行处理!核心问题:1。在Data中,可以为res动态分配内存么?如果可以,那怎么样释放呢?2。如果不可以,那可以在Data中临时创建个内存区,然后将内存区中的数据拷贝到res指向的空间中,怎么样拷贝?memcpy?有什么需要注意的地方呢
{
*ppResult = new ...
}调用方式是
PVOID pResult = NULL;
Data(...,&pResult);
//do something
if (pResult)
delete pResult;2。需要注意的问题是 Result 分配的内存空间是否足够,
如:BYTE res[1024];
...
Explain(res);//调用Explain
...
Explain(PVOID res)
{
...
Data(source,res);//调用Data
}
aa3000,在
if (pResult)
delete pResult;
的时候,出现了_CrtIsValidHeapPointer(pUserData)的错误,说是内存堆的问题!
可能是我没太说明白,这里面,pResult指向的结构体,里面的内容也是指针,其所指向的空间,也是需要进行动态分配的!我采用了一个迂回的方式,解决的!