如何在MFC中纠正此错误
How can I correct this error in mfc?
我正在使用我在Visual Studio 2010中编译的MFC,并且我会收到以下错误:
error C2664: 'memmove' : cannot convert parameter 1 from 'CString' to 'void *'
我的代码是:
CString testArray[5];
for (int i = 0; i < 5; i++)
{
testArray[i].Format("%d", i*4);
}
memmove(testArray[2], testArray[3], sizeof(testArray)-2*sizeof(testArray[0]));
for (int i = 0; i < 5; i++)
{
MessageBox(testArray[i]);
}
如何在MFC中纠正此错误?
这不是MFC中的错误。错误是在您的代码中,这完全无效。让我们仔细看一下:
memmove(testarray [2],testarray [3],, sizeof(testarray)-2*sizeof(testArray [0]));
-
使用复杂数据类型(例如
memmove
)使用低级内存复制例程是失败的确定方法。像CString
这样的类可以使用动态内存分配,直接覆盖其内存可能会导致任何类型的麻烦,从内存泄漏开始,并立即以应用程序失败结束。如果要复制CString
数据,请使用自己的方法:CString::Insert
,CString::Replace
,分配操作员或复制构造函数。 -
memmove
功能将两个指针带到源和目标内存块。您正在尝试通过两个CString
实例。当然,这是无效的,永远不会通过编译器类型检查。这是正确的memmove
用法的一个示例。
相关文章:
- __int64 CString 返回错误的值 - C++ MFC
- 由于选项卡顺序的原因,鼠标光标总是得到错误的hwnd-MFC应用程序
- MFC 对话框属性表用法在 VS 2017 中产生错误,适用于 VS 2013
- 列出MFC错误中递归运行的所有文件
- 如何在MFC中纠正此错误
- 通过 occi 连接 oracle db 的 MFC 应用程序.但它在 64 位机器中运行时0xC000007b错误
- 静态链接 MFC 时,未修改的 Visual Studio 2012 MFC 模板中出现链接错误
- 获取线路错误 MFC vs2012 (msvcp110.dll)
- 未解决的外部符号错误,MFC
- 尝试初始化MFC CCcriticalSection时出现错误C2248
- MFC SDI 应用程序文档 DOSAVE 错误0xFEEEFEEE
- 由于使用 MFC 时"__cdecl"和"__thiscall"调用约定不匹配而导致的链接器错误?
- 为什么在MFC中接收错误的消息而不是计时器消息
- 使用MFC的opencv中函数cvInitImageHeader的输入roi错误
- MFC 错误仅在发布模式下"Failed to create an empty document"
- 当我在x64bit模式下编译MFC应用程序时,错误lnk2019未解析符号sqlite3_open,在win32模式下没
- MFC:如果程序以前在最大化状态下关闭,则'Maximized Button'错误
- MFC 程序崩溃时调整窗口大小并出现错误"A required resource was not found."
- 使用两个MFC项目时出现错误C2065
- 将功能区添加到现有的非功能区 mfc 项目 - 在 VS2010 中断言错误