来者有分,帮小弟讲解讲解吧。

vc_human 2004-01-06 04:42:04
__declspec(dllexport) void apply(char *instr_1,char *instr_2,char *instr_3,char *outstr_1,char *outstr_2,char *outstr_3)
{
strcpy(outstr_1,"1");

memcpy(outstr_2,instr_2,sizeof(outstr_2));
memcpy(outstr_3,instr_3,sizeof(outstr_2));
}
为什么每次运行到memcpy(outstr_2,instr_2,sizeof(outstr_2));就弹出错误:
Access Violation呢?各位帮帮小弟吧,谢谢!!!!!!!!!!
...全文
39 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
choupipi 2004-01-06
  • 打赏
  • 举报
回复
传进来的指针应该是有效的,主程序会把dll映射到你的程序空间的。你的声明和调用一致吗?
yintongshun 2004-01-06
  • 打赏
  • 举报
回复
建议你看看http://expert.csdn.net/Expert/topic/2637/2637520.xml?temp=.1460535中薄荷的

你在用的时候还没申请内存
示例:
long iBufferSize=sizeof(instr_2);//先确认instr_2是否有效
char *outstr_2=new char[iBufferSize];
memcpy(outstr,instr_2,iBufferSize);
kulukyo 2004-01-06
  • 打赏
  • 举报
回复
可以用AfxIsValidString或者AfxIsValidAddress函数
char* p;//错误的使用
ASSERT(!AfxIsValidString(p,1));
p = new char[10];
ASSERT(AfxIsValidString(p,1));
delete[] p;
powercy 2004-01-06
  • 打赏
  • 举报
回复
调试到那个位置看看传入的几个指针指向的内存空间是否已被初始化好。
很可能是传入指针的问题。
vollin 2004-01-06
  • 打赏
  • 举报
回复
还有一个问题就是你的outstr_2有没有分配空间?
vollin 2004-01-06
  • 打赏
  • 举报
回复
AfxIsValidAddress用来检测内存地址是否有效但只在debug版中
vc_human 2004-01-06
  • 打赏
  • 举报
回复
可是,我这是没有办法。。。。只能有这样的接口,才能被调用成功。。。。。
vollin 2004-01-06
  • 打赏
  • 举报
回复
我一般都很少在DLL里面处理字符串,应为这很麻烦,如果非要传的话,我就会用内存文件。
vc_human 2004-01-06
  • 打赏
  • 举报
回复
我的数据是正确的啊
请问如何判断是否为无效指针呢?
vc_human 2004-01-06
  • 打赏
  • 举报
回复
to vollin() and alfwolf(戈壁孤狼)
那么我应该怎么做呢?
vc_human 2004-01-06
  • 打赏
  • 举报
回复
to windyloft(侠客行)我改了:
memcpy(outstr_2,instr_2,sizeof(instr_2));
memcpy(outstr_3,instr_3,sizeof(instr_3));
可是还是一样的错误:“0x00419e0”指针引用的“0x00415434”内存。该内存不能“written”。
alfwolf 2004-01-06
  • 打赏
  • 举报
回复
你传进来的指针是有效的吗?
还有需要修改成windyloft(侠客行) 所说的。
不过我觉得你传入的字符串指针可能是无效指针,你可以设断点看看。
vollin 2004-01-06
  • 打赏
  • 举报
回复
因为wndows使用的是虚拟内存地址,对不同和程序和dll而言,同一个指针值指向的是不同的地方。
vollin 2004-01-06
  • 打赏
  • 举报
回复
你的参数应该是从主程序里面传过来的吧?
因为主程序和dll用的内存是不同的。
windyloft 2004-01-06
  • 打赏
  • 举报
回复
memcpy(outstr_2,instr_2,sizeof(outstr_2));
应该改为
memcpy(outstr_2,instr_2,sizeof(instr_2));

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧