dll 中函数参数的问题

will_g 2010-12-10 11:59:53
DLL里有个函数
void fun(char *buffer)
{
char *buf = "abc";
strcpy(buffer, buf);
}

主程序调用该DLL

main()
{
……
char buffer[128];
fun(buffer);
cout << buffer << endl; //这句会崩,哪位大哥能详细讲讲原因,谢谢谢谢
……
}
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂石头_ 2010-12-10
  • 打赏
  • 举报
回复
lz,我自己写了个dll,然后调用dll没有发现问题,是不是lz的代码有什么没有注意的啊
nicklisir 2010-12-10
  • 打赏
  • 举报
回复
不在DLL中没问题,何故?想知道真相。。。。急
yihandrensunyong 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a19860903 的回复:]
char *buffer;
buffer = new char[100];
fun(&buffer);
cout<<buffer<<endl;
delete []buffer;
buffer = NULL;
[/Quote]
++
疯狂石头_ 2010-12-10
  • 打赏
  • 举报
回复
char *buffer;
buffer = new char[100];
fun(&buffer);
cout<<buffer<<endl;
delete []buffer;
buffer = NULL;
mayudong1 2010-12-10
  • 打赏
  • 举报
回复
如果不在dll中应该没问题吧
是不是DLL有问题呢
疯狂石头_ 2010-12-10
  • 打赏
  • 举报
回复
void fun(char **buffer)
{
char *buf = "abc";
strcpy(*buffer, buf);
}
chenjiawei007 2010-12-10
  • 打赏
  • 举报
回复
LZ的问题,是指针典型的问题,你这样把指针传进去,会导致不可预知的结果

可以按LS上的说,将地址传进去,用引用传递 &buffer

还有,最好别用 strcpy(buffer, buf) C的原始不安全的库,很容易益处报错

可以用_tcsicpy() 或者memcpy.

wltg2001 2010-12-10
  • 打赏
  • 举报
回复
没看出什么问题,你确定是那一行出了问题?
fandh 2010-12-10
  • 打赏
  • 举报
回复
正常运行,不应该有问题吧!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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