Memory QThread与读取内存
我遇到过这样的问题。 我有一个库,它允许通过UDP进程间通信。 这很直截了当。库创建可供其他进程从中写入和读取的共享内存。当进程想要读取感兴趣的内存时,它会传递一个字符串值,该字符串值唯一地指向相应的共享内存,并传递指向容器(char数组)的指针,他希望在该容器中接收读取结果。库提供安全的多线程 当线程离开run()例程时,我有一个异常 异常:是访问冲突,在中引发Memory QThread与读取内存,memory,qthread,Memory,Qthread,我遇到过这样的问题。 我有一个库,它允许通过UDP进程间通信。 这很直截了当。库创建可供其他进程从中写入和读取的共享内存。当进程想要读取感兴趣的内存时,它会传递一个字符串值,该字符串值唯一地指向相应的共享内存,并传递指向容器(char数组)的指针,他希望在该容器中接收读取结果。库提供安全的多线程 当线程离开run()例程时,我有一个异常 异常:是访问冲突,在中引发 void __cdecl _freeptd ( _ptiddata ptd ) {
void __cdecl _freeptd (
_ptiddata ptd
)
{
/*
* Do nothing unless per-thread data has been allocated for this module!
*/
if ( __flsindex != 0xFFFFFFFF ) {
/*
* if parameter "ptd" is NULL, get the per-thread data pointer
* Must NOT call _getptd because it will allocate one if none exists!
* If FLS_GETVALUE is NULL then ptd could not have been set
*/
if ( ptd == NULL
#ifndef _M_AMD64
&& (FLS_GETVALUE != NULL)
#endif /* _M_AMD64 */
)
ptd = FLS_GETVALUE(__flsindex);
/*
* Zero out the one pointer to the per-thread data block
*/
FLS_SETVALUE(__flsindex, (LPVOID)0);
_freefls(ptd);
}
if ( __getvalueindex != 0xFFFFFFFF ) {
/*
* Zero out the FlsGetValue pointer
*/
TlsSetValue(__getvalueindex, (LPVOID)0);
}
}
代码:
只有当我们允许library->readFromSharedMemory(结构名称,内存)时才会引发异常代码><代码>\u freeptd
无法访问导致访问冲突的内存
我需要帮忙。提前Thx。我找到了一个解决方案: 如果分配内存:
char*memory=newchar(2000)代码>
如果您使用char*memory=(char*)malloc(2000),它将失败代码>然后相应地释放,它将工作。我想它有一些新的、不同的编译器分配内存的方式
卢卡斯。我认为问题在于线路
char* memory = new char(2000);
这段代码意味着您只想分配一个字符大小的内存,并且内存由2000初始化
如果您打算分配2000个字符大小的内存,您应该使用
char* memory = new char[2000];
然后使用
delete [] memory;
我希望这将帮助您解决访问冲突问题
delete [] memory;