我在控制台中定义一个结构 struct
{
PVOID a;
DWORD b;
}add;
我想用memcpy直接将 add.b的值复制到add.a上 但是不知道为什么 总是会出现内存异常 求教各位大牛 小弟刚学习C++..
{
PVOID a;
DWORD b;
}add;
我想用memcpy直接将 add.b的值复制到add.a上 但是不知道为什么 总是会出现内存异常 求教各位大牛 小弟刚学习C++..
解决方案 »
- 求助:如何解决两个进程同时使用一个文件的冲突
- 程序打开后鼠标变成后台运行
- 我该使用哪种线程同步方式?
- 大家来看看这个问题,谢谢。
- 请教如何双击打开U盘时,自动运行U盘中的一个可执行文件???
- 怎么样实现:比如Word 它会更具用户的不同情况 右键弹出不同菜单
- 接手维护一个软件模快,大概有一万行左右的代码,请问下有经验的朋友,你们大概花多久熟悉?
- 图象处理高手请进-如何在内存中画图,然后编码为GIF格式,存为GIF文件?(可以给几百分)
- 新手被困,大虾拯救!
- 谁来拿23分?求解CListCtrl::InsertItem(int nItem,LPCTSTR lpszItem)问题
- 请教在弹出的子窗口中如何获得父窗口的句柄
- 如果没有_set_invalid_parameter_handler,能否捕获扩展CRT抛出的错误?
之后,程序时正常的,看看是不是你的情况
#include <stdio.h>
#include <windows.h>struct
{
PVOID a;
DWORD b;
}add; int main()
{
add.a=new DWORD;
add.b=84;
memcpy(add.a,&add.b,sizeof(add.b)); getchar();
return 0;
}
add.a是指针,add.b是DWORDmemcpy(&add.a,&add.b,sizeof(DWORD));
memcpy(add.a,&add.b,sizeof(DWORD));第一个不会出错,这个把add.a当做一个数来用了,虽然运行正确,但建议不要这样用这二个会出错,因为a是指针但是a并没有指向任何存储空间,你要先给a分配内存
正解,这个可能是你没分配内存就直接拷贝了,当然会出现内存错误,另外,你用 memcpy 拷贝时,可以用 sizeof()来确定你要拷贝的数据长度。这个长度不对也会导致内存错误的
这个有道理,你是想把add.b拷到指定的内存地址,可能系统对这块内存有保护,不让你写数据。