c++类的栈分配方式

c++类的栈分配方式_第1张图片

;    COMDAT _main                ;main函数
_TEXT    SEGMENT
_i$ = -36                        ; size = 4
_t$ = -24                        ; size = 8
_j$ = -8                        ; size = 4
_main    PROC                        ; COMDAT

; 15   : {

    push    ebp
    mov    ebp, esp
    sub    esp, 232                ; 000000e8H
    push    ebx
    push    esi
    push    edi
    lea    edi, DWORD PTR [ebp-232]
    mov    ecx, 58                    ; 0000003aH
    mov    eax, -858993460                ; ccccccccH
    rep stosd

; 16   :     int j = 10;

    mov    DWORD PTR _j$[ebp], 10            ; 0000000aH

; 17   :    
; 18   :     test t;

    lea    ecx, DWORD PTR _t$[ebp]
    call    ??0test@@QAE@XZ                ; test::test

; 19   :    
; 20   :     int i = t.i;

    mov    eax, DWORD PTR _t$[ebp]
    mov    DWORD PTR _i$[ebp], eax

; 21   :
; 22   :     printf("%d,%d", i, sizeof(test));

    mov    esi, esp
    push    8
    mov    eax, DWORD PTR _i$[ebp]
    push    eax
    push    OFFSET ??_C@_05KABNCBHK@?$CFd?0?$CFd?$AA@
    call    DWORD PTR __imp__printf
    add    esp, 12                    ; 0000000cH
    cmp    esi, esp
    call    __RTC_CheckEsp

; 23   : }

 

;    COMDAT ??0test@@QAE@XZ    ;test类的默认构造函数
_TEXT    SEGMENT
_this$ = -8                        ; size = 4
??0test@@QAE@XZ PROC                    ; test::test, COMDAT
; _this$ = ecx

; 8    : {

    push    ebp
    mov    ebp, esp
    sub    esp, 204                ; 000000ccH
    push    ebx
    push    esi
    push    edi
    push    ecx
    lea    edi, DWORD PTR [ebp-204]
    mov    ecx, 51                    ; 00000033H
    mov    eax, -858993460                ; ccccccccH
    rep stosd
    pop    ecx
    mov    DWORD PTR _this$[ebp], ecx
    mov    eax, DWORD PTR _this$[ebp]
    mov    DWORD PTR [eax], 100            ; 00000064H
    mov    eax, DWORD PTR _this$[ebp]
    mov    DWORD PTR [eax+4], 200            ; 000000c8H

; 9    : }

你可能感兴趣的:(C++,c)