搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 谁帮我翻译一下,谢谢
标题:
谁帮我翻译一下,谢谢
只看楼主
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分:42393
注 册:2010-12-16
第
11
楼
得分:0
回复 10楼 wp231957
dll可以用全局变量,你检查一下你的调用可能把那个传进去的字符串写完的内存过大了
我行我乐
我的博客:
http://blog.yuccn. net
2012-12-09 22:28
wp231957
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册:2012-10-18
第
12
楼
得分:0
一共申请了20个char 怎么会过大呢
DO IT YOURSELF !
2012-12-09 22:35
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分: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的数据,这就是说写入的内存过大导致堆栈破坏,并不是说你申请了很大的内存~~
我行我乐
我的博客:
http://blog.yuccn. net
2012-12-09 22:37
wp231957
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册: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
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册: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
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册: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
帖 子:6809
专家分:42393
注 册:2010-12-16
第
17
楼
得分:0
回复 14楼 wp231957
是这个问题就好,不过楼主知道调用规范不统一为什么就会出现这个问题吗?如果不知道,建议学习下~~~如果你从事it行业不会没有好处的
我行我乐
我的博客:
http://blog.yuccn. net
2012-12-09 22:44
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分:42393
注 册:2010-12-16
第
18
楼
得分:0
回复 15楼 wp231957
我担心的是代码逻辑有问题导致了写完大于20个字节而已 ^_^
我行我乐
我的博客:
http://blog.yuccn. net
2012-12-09 22:46
wp231957
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册:2012-10-18
第
19
楼
得分:0
以下是引用
yuccn
在2012-12-9 22:44:59的发言:
是这个问题就好,不过楼主知道调用规范不统一为什么就会出现这个问题吗?如果不知道,建议学习下~~~如果你从事it行业不会没有好处的
哈哈,我都奔4的人了,估计不会改行从事挨踢
另:调用规范不一致的主要原因不就是函数的形参入栈顺序不一样吗
DO IT YOURSELF !
2012-12-09 22:51
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6809
专家分:42393
注 册:2010-12-16
第
20
楼
得分:0
回复 19楼 wp231957
主要原因不是参数顺序问题,问题在于是调用者来平衡堆栈还是被调用者来平衡堆栈
也就是说参数入栈的时候,调用规范不统一,就可以出现没有平衡堆栈就返回了,这个时候去esp获取返回地址的时候,由于堆栈还没有平衡,获取到的返回地址esp就是个错误的地址,
返回不了给调用者了,导致崩溃~~~
[
本帖最后由 yuccn 于 2012-12-9 23:12 编辑
]
我行我乐
我的博客:
http://blog.yuccn. net
2012-12-09 22:58
26
2/3页
1
2
3
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-390358-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.354966 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved