内存映射,拷贝内存数据出错,请高手指点
在a工程里:
BOOL CCallDlg::CreateTextData(CString strData)
{
DWORD dsize = sizeof(strData);
HANDLE hdata = ::CreateFileMapping((HANDLE)0xffffffff,NULL,PAGE_READWRITE,0,dsize,"DataOne");
if(hdata == NULL)
{
this->MessageBox("create memory map file failed");
return false;
}
LPVOID lpdata = ::MapViewOfFile(hdata,FILE_MAP_READ|FILE_MAP_WRITE,0,0,dsize);
if(lpdata == NULL)
{
this->MessageBox("map View of file failed");
return false;
}
strcpy((char*)lpdata,(char*)&strData); ////如果拷贝大数据量,这个strcpy会出错,会是什么原因呢,使用
strcat,memmove也一样。。。
ASSERT(::UnmapViewOfFile(lpdata));
return true;
}
strcpy((char*)lpdata,(char*)&strData); ////如果拷贝大数据量,这个strcpy会出错,会是什么原因呢,使用
strcat,memmove也一样。。。
BOOL CCallDlg::CreateTextData(CString strData)
{
DWORD dsize = sizeof(strData);
HANDLE hdata = ::CreateFileMapping((HANDLE)0xffffffff,NULL,PAGE_READWRITE,0,dsize,"DataOne");
if(hdata == NULL)
{
this->MessageBox("create memory map file failed");
return false;
}
LPVOID lpdata = ::MapViewOfFile(hdata,FILE_MAP_READ|FILE_MAP_WRITE,0,0,dsize);
if(lpdata == NULL)
{
this->MessageBox("map View of file failed");
return false;
}
strcpy((char*)lpdata,(char*)&strData); ////如果拷贝大数据量,这个strcpy会出错,会是什么原因呢,使用
strcat,memmove也一样。。。
ASSERT(::UnmapViewOfFile(lpdata));
return true;
}
strcpy((char*)lpdata,(char*)&strData); ////如果拷贝大数据量,这个strcpy会出错,会是什么原因呢,使用
strcat,memmove也一样。。。
...全文
相关推荐
linux mmap文件内存映射机制
### Linux mmap 文件内存映射机制详解#### 一、引言`mmap`系统调用作为Linux系统中一种重要的内存管理和文件访问机制,在实际应用中具有广泛的应用场景。
关于内存映射
本文将深入探讨内存映射的概念、作用、实现方式以及一个简单的文件拷贝示例。
java 深入理解内存映射文件原理
内存映射文件的效率优势在于减少数据传输次数。传统的IO读取文件时,数据先从硬盘拷贝到内核缓冲区,再拷贝到用户空间,共两步拷贝。
内存映射文件实现大数据量快速存储
这种方法尤其适用于处理大数据量的情况,因为它消除了传统I/O操作中的缓冲区拷贝,提高了数据传输效率。1.
Linux下的内存映射
**减少数据拷贝**:相比之下,传统的IPC方式如管道和消息队列需要多次的数据拷贝过程,而共享内存只需要两次拷贝:一次是从输入文件到共享内存,另一次是从共享内存到输出文件。3.



