| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1737 人关注过本帖
标题:出一小题,考下内存堆栈
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
这是本人写的测试是小端法还是大端法的代码,

# include <stdio.h>

#define BOOL int

BOOL BigOrLittle_endian(void)
{
    union{
        int x ;
        char ch ;
    }tagUnion ;
    tagUnion.x = 1 ;
    return (tagUnion.ch == 1) ;
}
int main()
{
    printf("%d\n" , BigOrLittle_endian()) ;
    return 0 ;
}

愿用余生致力编程
2010-12-18 21:33
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
恩,应该是这样吧,我也这么想的
cc是在初始化栈的时候填充的(长度不定,整个栈都是cc),cc对应的汇编代码是int 3(调试中断),防止代码执行到栈里面
而用的(说错了的话,请大牛们别喷,我只是说我的认识)
“现在的cpu数据总线是32位的,也就是每次都要访问四个字节”,这个我在一个地方也说过,不过被你喷了(在一篇关于结构体问题的帖子),呵呵!
楼主的数据好奇怪啊,难道是精心构造的(被覆盖的地址)?(在tc下一直能printf!换其它的就不行!正在追踪中,看看是怎么回事!)
2010-12-18 21:45
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
我现在就在想为什么要填充cc呢??而不填充别的呢???真的是饶头呀!!期待楼上的成果!

愿用余生致力编程
2010-12-18 21:58
我是西瓜
Rank: 2
等 级:论坛游民
帖 子:61
专家分:97
注 册:2010-10-22
收藏
得分:0 
这样的帖子才是论坛需要的。
2010-12-18 21:58
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
我不是说了cc的汇编码是int 3吗?是为了防止程序不小心执行到这里面而存入的,程序(错误的)执行到这里就会不再执行
typedef void (*StackFn)(void);

int main()
{
    char a[]={186,169 ,1,187,1,0,180,64,185,12,0,205,33,180,1,205,33,180,76,205,33};  
    char s[]="hello world!";

    //asm call far ptr d@
    StackFn pFn = (StackFn)a;
    pFn();

    return 0;
}
像这样的程序,它就会执行a里面的东西(注意,环境是win-tc)


[ 本帖最后由 xiaomarn 于 2010-12-18 22:12 编辑 ]
2010-12-18 22:08
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
嘎嘎!刚才没有仔细看呀!!!哈哈!!!

愿用余生致力编程
2010-12-18 22:11
小小哥
Rank: 4
等 级:业余侠客
帖 子:139
专家分:224
注 册:2010-11-28
收藏
得分:0 
都是高手啊,学习……
2010-12-19 16:34
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-12-19 21:43
快速回复:出一小题,考下内存堆栈
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022655 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved