• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            聚星亭

            吾笨笨且懶散兮 急須改之而奮進
            posts - 74, comments - 166, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            [轉載]C/C++技術細節(VC編譯器)

            Posted on 2009-03-30 17:09 besterChen 閱讀(492) 評論(0)  編輯 收藏 引用 所屬分類: C/C++/STL/boost
            以下內容引用與 Pediy.com
            1.Jmp stub Function
                    考慮以下函數:
                            Void Test(){}
                            Void main()
                            { test();}
                    在debug情況下,編譯后
                            Void Jmp_Test()
                            {
                                        Jmp to Real_test();
                            }
                            Void main()
                            {jmp_test()}
            如何讓編譯器不產生Jmp Stub function。
            解決方法,在Link選項中去掉Increment link.

            2.自定義節,數據代碼合并在一個節
                    #pragma data_seg(".mydat") //指定該.cpp/.c(其實應該是某個.obj文件) 數據存放的節

            注意:        Dword a; //  未初始化,數據仍保存在.data節
                                Dword a=0; //這樣a就保存到.mydat節了

                    #pragma code_seg(".shell")//指定該.cpp/.c(其實應該是某個.obj文件) 代碼存放的節
                    #pragma comment(linker,"/SECTION:.mydat,RWE") //修改節屬性
                    #pragma comment(linker,"/SECTION:.shell,RWE")
                    #pragma comment(linker,"/MERGE:.mydat=.shell")//兩節合并到.shell節

            3.__declspec(naked)聲明的函數不能使用局部變量

            4.char[]
            char test[]=”test”//假定 此處地址為0x4001000
            void main()
            {
                printf(“%x”,test);
                printf(“%x”,&test);
            }//執行以上代碼分別輸出什么
            答案:兩個都輸出0x4001000,哈哈,沒想到吧。

            5.char*與char[]
            char* test1=”test”;
            char test2[]=”test”
            考慮下執行該程序會產生什么狀況
            void main()
            {
                test1=”new test”;
                test2=”new test”;
            }
            考慮下再看答案





            編譯后是這樣的。
            atest db ‘test’,0
            Test1  dd  offset of attest
            Test2 db ‘test’,0
            所以test2=”new test”;編譯過不了,當然我們仍然能夠通過memcpy給test2賦值

            6.數據對齊
            Word a;
            Char str[]=”ddddd”;
            Void main()
            {
              Printf(”%d”,&str-&a);//輸出什么,考慮一下
            }
            答案:可能輸出2,也可能輸出4

            以后我會自己總結一些貼過來的!
            无码日韩人妻精品久久蜜桃 | 久久综合九色综合欧美狠狠| 久久精品无码专区免费东京热| 欧美va久久久噜噜噜久久| 久久久久中文字幕| 久久久久高潮综合影院| 久久久久女人精品毛片| 国产精品女同一区二区久久| 亚洲欧美成人久久综合中文网 | 日韩精品国产自在久久现线拍| 久久久久久久综合狠狠综合| 久久精品国产99国产电影网| 亚洲国产成人乱码精品女人久久久不卡| 久久久久无码精品国产不卡| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久人与动人物a级毛片| 国产精品久久久天天影视| 亚洲国产视频久久| 久久99精品国产99久久6| 99精品国产在热久久| 久久久久久久精品成人热色戒| 久久久久人妻精品一区三寸蜜桃| 久久亚洲私人国产精品| 久久精品一本到99热免费| 久久人人爽人人爽人人片AV麻豆| 99久久精品无码一区二区毛片 | 久久亚洲精品成人AV| 久久www免费人成看片| 无码国内精品久久综合88 | 日韩精品久久无码中文字幕 | 久久国产精品99久久久久久老狼| 亚洲精品无码久久一线| 久久久久久久女国产乱让韩| 久久精品免费全国观看国产| 看全色黄大色大片免费久久久| 国产精品成人99久久久久 | 久久精品国产男包| 日韩人妻无码精品久久免费一 | 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 精品国产一区二区三区久久| 丰满少妇高潮惨叫久久久|