|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 谁帮我翻译一下,谢谢
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
995
人关注过本帖
标题:
谁帮我翻译一下,谢谢
只看楼主
加入收藏
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
11
楼
收藏
得分:0
回复 10楼 wp231957
dll可以用全局变量,你检查一下你的调用可能把那个传进去的字符串写完的内存过大了
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-09 22:28
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
12
楼
收藏
得分:0
一共申请了20个char
怎么会过大呢
DO IT YOURSELF !
2012-12-09 22:35
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
13
楼
收藏
得分:16
typedef void (WINAPI *MYFUNC)(int,int,char*);
吧这个改成typedef void (*MYFUNC)(int,int,char*);看看
如果这样好了就是调用规范的问题
“一共申请了20个char
怎么会过大呢” 你还不明白堆栈破坏的原理啊,如果是堆栈破坏,就是说你申请哦20个char 但是你往里面写入了 大于20个char的数据,这就是说写入的内存过大导致堆栈破坏,并不是说你申请了很大的内存~~
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-09 22:37
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
14
楼
收藏
得分:0
以下是引用
yuccn
在2012-12-9 22:37:31的发言:
typedef void (WINAPI *MYFUNC)(int,int,char*);
吧这个改成typedef void (*MYFUNC)(int,int,char*);看看
如果这样好了就是调用规范的问题
“一共申请了20个char
怎么会过大呢” 你还不明白堆栈破坏的原理啊,如果是堆栈破坏,就是说你申请哦20个char 但是你往里面写入了 大于20个char的数据,这就是说写入的内存过大导致堆栈破坏,并不是说你申请了很大的内存~~
还真是如此
手懒了,当时想把winapi去掉 测试一下的
但是想当然的认为 和winapi无关
实际上貌似winapi 就是执行了stdcall吧
DO IT YOURSELF !
2012-12-09 22:39
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
15
楼
收藏
得分:0
以下是引用
yuccn
在2012-12-9 22:37:31的发言:
typedef void (WINAPI *MYFUNC)(int,int,char*);
吧这个改成typedef void (*MYFUNC)(int,int,char*);看看
如果这样好了就是调用规范的问题
“一共申请了20个char
怎么会过大呢” 你还不明白堆栈破坏的原理啊,如果是堆栈破坏,就是说你申请哦20个char 但是你往里面写入了 大于20个char的数据,这就是说写入的内存过大导致堆栈破坏,并不是说你申请了很大的内存~~
258转换成16进制就是102 远远小于20呢
DO IT YOURSELF !
2012-12-09 22:42
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
16
楼
收藏
得分:0
网上抄的代码害人啊
typedef void (WINAPI *MYFUNC)(int,int,char*);
MYFUNC mydec2yyy = NULL;
mydec2yyy = (MYFUNC)GetProcAddress(hDllInst,"dec2yyy");
其实到现在
粉色的代码的具体含义 我仍然是似似而非
DO IT YOURSELF !
2012-12-09 22:43
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
17
楼
收藏
得分:0
回复 14楼 wp231957
是这个问题就好,不过楼主知道调用规范不统一为什么就会出现这个问题吗?如果不知道,建议学习下~~~如果你从事it行业不会没有好处的
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-09 22:44
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
18
楼
收藏
得分:0
回复 15楼 wp231957
我担心的是代码逻辑有问题导致了写完大于20个字节而已 ^_^
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-09 22:46
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
19
楼
收藏
得分:0
以下是引用
yuccn
在2012-12-9 22:44:59的发言:
是这个问题就好,不过楼主知道调用规范不统一为什么就会出现这个问题吗?如果不知道,建议学习下~~~如果你从事it行业不会没有好处的
哈哈,我都奔4的人了,估计不会改行从事挨踢
另:调用规范不一致的主要原因不就是函数的形参入栈顺序不一样吗
DO IT YOURSELF !
2012-12-09 22:51
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
20
楼
收藏
得分:0
回复 19楼 wp231957
主要原因不是参数顺序问题,问题在于是调用者来平衡堆栈还是被调用者来平衡堆栈
也就是说参数入栈的时候,调用规范不统一,就可以出现没有平衡堆栈就返回了,这个时候去esp获取返回地址的时候,由于堆栈还没有平衡,获取到的返回地址esp就是个错误的地址,
返回不了给调用者了,导致崩溃~~~
[
本帖最后由 yuccn 于 2012-12-9 23:12 编辑
]
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-09 22:58
举报帖子
使用道具
赠送鲜花
26
2/3页
1
2
3
快速回复:
谁帮我翻译一下,谢谢
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.054827 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved