C语言中各种变量的内存分配

内存分布图

结论:

  1. 在存储上,文件外作用域和文件内作用域没有区别,因为在链接后两者是一样的。
  2. 凡是未初始化的“静态”(块作用域的,文件作用域的,const的,非const的) 变量一律在.bss上分配
  3. 自动变量(块内且非静态,非寄存器变量,一律在栈上分配)
C语言变量内存布局

实验代码

自己动手验证更好

#include < stdio.h > #include < stdlib.h >

int add(int x, int y, int z) {
    return x + y;
}

//extern int extern_file_int = 0x1; //A0:这样使用会报错:‘const_extern_file_int’已初始化,却又被声明为‘extern’;
int extern_file_int = 0x1; //A1:extern关键字只用于声明,在定义变量的时候只需要int extern_file_int 即可 // .data
int extern_file_int_null; //未初始化 // .bss

static int static_file_int = 0x2; // .data
static int static_file_int_null; //未初始化 // .bss

//const
const int const_extern_file_int = 0x11; // .rodata
const int const_extern_file_int_null; //未初始化 // .bss

const static int const_static_file_int = 0x21; // .rodata
const static int const_static_file_int_null; //未初始化 // .bss


int main() {
    //access
    extern_file_int = 0x1; //0x804a010 //可用gdb改写
    static_file_int = 0x2; //0x804a014 //可用gdb改写
    extern_file_int_null = 0x11; //0x804a03c //可用gdb改写
    static_file_int_null = 0x21; //0x804a028 //可用gdb改写
    
    int access_int;
    access_int = const_extern_file_int; //0x8048560 //可用gdb改写 .rodata也可以改写!!!
    access_int = const_extern_file_int_null; //0x804a038 //可用gdb改写
    access_int = const_static_file_int; //0x8048564 //可用gdb改写
    access_int = const_static_file_int_null; //0x804a02c //可用gdb改写 .bss中的const可以用gdb改写
    
    //未初始化
    auto int auto_int_null; //未初始化 //分配:bss
    register int register_int_null; //未初始化
    static int static_block_int_null; //未初始化 // .bss
    ////access:
    auto_int_null = 0x201; //movl   $0x201,-0x18(%ebp)
    register_int_null = 0x202; //mov    $0x202,%ebx
    static_block_int_null = 0x203; //movl   $0x203,0x804a030
    
    //已初始化
    auto int auto_int = 0x3; //movl   $0x3,-0x14(%ebp)
    register int register_int = 0x4; //没有 为什么? 被优化掉了? //TODO 多申请几个register变量,看其他的是在哪里分配的
    static int static_block_int = 0x5; //没有(.data 在编译时赋值,所有这里没有) //.data
    
    //access:
    auto_int = 0x6; //movl   $0x6,-0x14(%ebp) 即:0xbffff1d4
    register_int = 0x7; //没有。为什么?
    static_block_int = 0x8; //movl   $0x8,0x804a018
    //const
    //const,未初始化
    auto int const_auto_int_null; //未初始化 //分配:bss
    register int const_register_int_null; //未初始化
    static int const_static_block_int_null; //未初始化 // .bss
    
    //access:
    access_int = const_auto_int_null; //-0x10(%ebp)
    access_int = const_register_int_null; //mov    %esi,-0x1c(%ebp)
    access_int = const_static_block_int_null; //mov    0x804a034,%eax //可用gdb改写
    
    
    //const,已初始化
    auto int const_auto_int = 0x31; //movl   $0x31,-0xc(%ebp) //可用gdb改写
    register int const_register_int = 0x41; //mov    $0x41,%esi   //可用gdb改写
    static int const_static_block_int = 0x51; //没有(在编译时初始化) // .data
    //access:
    access_int = const_auto_int;
    access_int = const_register_int;
    access_int = const_static_block_int; //mov    0x804a01c,%eax  //可用gdb改写
    
    int * p1 = (int * ) malloc(sizeof(int) * 4);
    printf("%p\n", p1);
    int * p2 = (int * ) malloc(sizeof(int) * 10);
    printf("%p\n", p2);
    
    getchar();
    //access
    return add(auto_int_null, register_int_null, static_block_int_null);
}

留给你的问题

  1. .bss中如何区分const和非const的? const的都放在一块的吗?
  2. const只是C中的编程约束,并未用内存保护来实现。对应的页框仍旧能用gdb改写(是不是gdb具有特殊权限,所以不具有代表性?看看程序内存布局,关注内存段的读写权限)

附录

obj.dump


cmem:     file format elf32-i386


Disassembly of section .interp:

08048154 <.interp>:
 8048154:   2f                      das    
 8048155:   6c                      insb   (%dx),%es:(%edi)
 8048156:   69 62 2f 6c 64 2d 6c    imul   $0x6c2d646c,0x2f(%edx),%esp
 804815d:   69 6e 75 78 2e 73 6f    imul   $0x6f732e78,0x75(%esi),%ebp
 8048164:   2e 32 00                xor    %cs:(%eax),%al

Disassembly of section .note.ABI-tag:

08048168 <.note.ABI-tag>:
 8048168:   04 00                   add    $0x0,%al
 804816a:   00 00                   add    %al,(%eax)
 804816c:   10 00                   adc    %al,(%eax)
 804816e:   00 00                   add    %al,(%eax)
 8048170:   01 00                   add    %eax,(%eax)
 8048172:   00 00                   add    %al,(%eax)
 8048174:   47                      inc    %edi
 8048175:   4e                      dec    %esi
 8048176:   55                      push   %ebp
 8048177:   00 00                   add    %al,(%eax)
 8048179:   00 00                   add    %al,(%eax)
 804817b:   00 02                   add    %al,(%edx)
 804817d:   00 00                   add    %al,(%eax)
 804817f:   00 06                   add    %al,(%esi)
 8048181:   00 00                   add    %al,(%eax)
 8048183:   00 18                   add    %bl,(%eax)
 8048185:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .note.gnu.build-id:

08048188 <.note.gnu.build-id>:
 8048188:   04 00                   add    $0x0,%al
 804818a:   00 00                   add    %al,(%eax)
 804818c:   14 00                   adc    $0x0,%al
 804818e:   00 00                   add    %al,(%eax)
 8048190:   03 00                   add    (%eax),%eax
 8048192:   00 00                   add    %al,(%eax)
 8048194:   47                      inc    %edi
 8048195:   4e                      dec    %esi
 8048196:   55                      push   %ebp
 8048197:   00 05 a2 8b 05 ad       add    %al,0xad058ba2
 804819d:   b2 a0                   mov    $0xa0,%dl
 804819f:   83 68 68 e0             subl   $0xffffffe0,0x68(%eax)
 80481a3:   c8 19 8f 34             enter  $0x8f19,$0x34
 80481a7:   b8 3e 94 ea a8          mov    $0xa8ea943e,%eax

Disassembly of section .gnu.hash:

080481ac <.gnu.hash>:
 80481ac:   02 00                   add    (%eax),%al
 80481ae:   00 00                   add    %al,(%eax)
 80481b0:   06                      push   %es
 80481b1:   00 00                   add    %al,(%eax)
 80481b3:   00 01                   add    %al,(%ecx)
 80481b5:   00 00                   add    %al,(%eax)
 80481b7:   00 05 00 00 00 00       add    %al,0x0
 80481bd:   20 00                   and    %al,(%eax)
 80481bf:   20 00                   and    %al,(%eax)
 80481c1:   00 00                   add    %al,(%eax)
 80481c3:   00 06                   add    %al,(%esi)
 80481c5:   00 00                   add    %al,(%eax)
 80481c7:   00                      .byte 0x0
 80481c8:   ad                      lods   %ds:(%esi),%eax
 80481c9:   4b                      dec    %ebx
 80481ca:   e3 c0                   jecxz  804818c <_init-0x16c>

Disassembly of section .dynsym:

080481cc <.dynsym>:
        ...
 80481dc:   29 00                   sub    %eax,(%eax)
        ...
 80481e6:   00 00                   add    %al,(%eax)
 80481e8:   12 00                   adc    (%eax),%al
 80481ea:   00 00                   add    %al,(%eax)
 80481ec:   30 00                   xor    %al,(%eax)
        ...
 80481f6:   00 00                   add    %al,(%eax)
 80481f8:   12 00                   adc    (%eax),%al
 80481fa:   00 00                   add    %al,(%eax)
 80481fc:   38 00                   cmp    %al,(%eax)
        ...
 8048206:   00 00                   add    %al,(%eax)
 8048208:   12 00                   adc    (%eax),%al
 804820a:   00 00                   add    %al,(%eax)
 804820c:   01 00                   add    %eax,(%eax)
        ...
 8048216:   00 00                   add    %al,(%eax)
 8048218:   20 00                   and    %al,(%eax)
 804821a:   00 00                   add    %al,(%eax)
 804821c:   3f                      aas    
        ...
 8048225:   00 00                   add    %al,(%eax)
 8048227:   00 12                   add    %dl,(%edx)
 8048229:   00 00                   add    %al,(%eax)
 804822b:   00 1a                   add    %bl,(%edx)
 804822d:   00 00                   add    %al,(%eax)
 804822f:   00 4c 86 04             add    %cl,0x4(%esi,%eax,4)
 8048233:   08 04 00                or     %al,(%eax,%eax,1)
 8048236:   00 00                   add    %al,(%eax)
 8048238:   11 00                   adc    %eax,(%eax)
 804823a:   0f                      .byte 0xf
        ...

Disassembly of section .dynstr:

0804823c <.dynstr>:
 804823c:   00 5f 5f                add    %bl,0x5f(%edi)
 804823f:   67 6d                   insl   (%dx),%es:(%di)
 8048241:   6f                      outsl  %ds:(%esi),(%dx)
 8048242:   6e                      outsb  %ds:(%esi),(%dx)
 8048243:   5f                      pop    %edi
 8048244:   73 74                   jae    80482ba <_init-0x3e>
 8048246:   61                      popa   
 8048247:   72 74                   jb     80482bd <_init-0x3b>
 8048249:   5f                      pop    %edi
 804824a:   5f                      pop    %edi
 804824b:   00 6c 69 62             add    %ch,0x62(%ecx,%ebp,2)
 804824f:   63 2e                   arpl   %bp,(%esi)
 8048251:   73 6f                   jae    80482c2 <_init-0x36>
 8048253:   2e 36 00 5f 49          cs add %bl,%cs:%ss:0x49(%edi)
 8048258:   4f                      dec    %edi
 8048259:   5f                      pop    %edi
 804825a:   73 74                   jae    80482d0 <_init-0x28>
 804825c:   64 69 6e 5f 75 73 65    imul   $0x64657375,%fs:0x5f(%esi),%ebp
 8048263:   64 
 8048264:   00 70 72                add    %dh,0x72(%eax)
 8048267:   69 6e 74 66 00 67 65    imul   $0x65670066,0x74(%esi),%ebp
 804826e:   74 63                   je     80482d3 <_init-0x25>
 8048270:   68 61 72 00 6d          push   $0x6d007261
 8048275:   61                      popa   
 8048276:   6c                      insb   (%dx),%es:(%edi)
 8048277:   6c                      insb   (%dx),%es:(%edi)
 8048278:   6f                      outsl  %ds:(%esi),(%dx)
 8048279:   63 00                   arpl   %ax,(%eax)
 804827b:   5f                      pop    %edi
 804827c:   5f                      pop    %edi
 804827d:   6c                      insb   (%dx),%es:(%edi)
 804827e:   69 62 63 5f 73 74 61    imul   $0x6174735f,0x63(%edx),%esp
 8048285:   72 74                   jb     80482fb <_init+0x3>
 8048287:   5f                      pop    %edi
 8048288:   6d                      insl   (%dx),%es:(%edi)
 8048289:   61                      popa   
 804828a:   69 6e 00 47 4c 49 42    imul   $0x42494c47,0x0(%esi),%ebp
 8048291:   43                      inc    %ebx
 8048292:   5f                      pop    %edi
 8048293:   32 2e                   xor    (%esi),%ch
 8048295:   30 00                   xor    %al,(%eax)

Disassembly of section .gnu.version:

08048298 <.gnu.version>:
 8048298:   00 00                   add    %al,(%eax)
 804829a:   02 00                   add    (%eax),%al
 804829c:   02 00                   add    (%eax),%al
 804829e:   02 00                   add    (%eax),%al
 80482a0:   00 00                   add    %al,(%eax)
 80482a2:   02 00                   add    (%eax),%al
 80482a4:   01 00                   add    %eax,(%eax)

Disassembly of section .gnu.version_r:

080482a8 <.gnu.version_r>:
 80482a8:   01 00                   add    %eax,(%eax)
 80482aa:   01 00                   add    %eax,(%eax)
 80482ac:   10 00                   adc    %al,(%eax)
 80482ae:   00 00                   add    %al,(%eax)
 80482b0:   10 00                   adc    %al,(%eax)
 80482b2:   00 00                   add    %al,(%eax)
 80482b4:   00 00                   add    %al,(%eax)
 80482b6:   00 00                   add    %al,(%eax)
 80482b8:   10 69 69                adc    %ch,0x69(%ecx)
 80482bb:   0d 00 00 02 00          or     $0x20000,%eax
 80482c0:   51                      push   %ecx
 80482c1:   00 00                   add    %al,(%eax)
 80482c3:   00 00                   add    %al,(%eax)
 80482c5:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .rel.dyn:

080482c8 <.rel.dyn>:
 80482c8:   f0 9f                   lock lahf 
 80482ca:   04 08                   add    $0x8,%al
 80482cc:   06                      push   %es
 80482cd:   04 00                   add    $0x0,%al
        ...

Disassembly of section .rel.plt:

080482d0 <.rel.plt>:
 80482d0:   00 a0 04 08 07 01       add    %ah,0x1070804(%eax)
 80482d6:   00 00                   add    %al,(%eax)
 80482d8:   04 a0                   add    $0xa0,%al
 80482da:   04 08                   add    $0x8,%al
 80482dc:   07                      pop    %es
 80482dd:   02 00                   add    (%eax),%al
 80482df:   00 08                   add    %cl,(%eax)
 80482e1:   a0 04 08 07 03          mov    0x3070804,%al
 80482e6:   00 00                   add    %al,(%eax)
 80482e8:   0c a0                   or     $0xa0,%al
 80482ea:   04 08                   add    $0x8,%al
 80482ec:   07                      pop    %es
 80482ed:   04 00                   add    $0x0,%al
 80482ef:   00 10                   add    %dl,(%eax)
 80482f1:   a0 04 08 07 05          mov    0x5070804,%al
        ...

Disassembly of section .init:

080482f8 <_init>:
 80482f8:   53                      push   %ebx
 80482f9:   83 ec 08                sub    $0x8,%esp
 80482fc:   e8 00 00 00 00          call   8048301 <_init+0x9>
 8048301:   5b                      pop    %ebx
 8048302:   81 c3 f3 1c 00 00       add    $0x1cf3,%ebx
 8048308:   8b 83 fc ff ff ff       mov    -0x4(%ebx),%eax
 804830e:   85 c0                   test   %eax,%eax
 8048310:   74 05                   je     8048317 <_init+0x1f>
 8048312:   e8 59 00 00 00          call   8048370 <__gmon_start__@plt>
 8048317:   e8 04 01 00 00          call   8048420 <frame_dummy>
 804831c:   e8 df 02 00 00          call   8048600 <__do_global_ctors_aux>
 8048321:   83 c4 08                add    $0x8,%esp
 8048324:   5b                      pop    %ebx
 8048325:   c3                      ret    

Disassembly of section .plt:

08048330 <printf@plt-0x10>:
 8048330:   ff 35 f8 9f 04 08       pushl  0x8049ff8
 8048336:   ff 25 fc 9f 04 08       jmp    *0x8049ffc
 804833c:   00 00                   add    %al,(%eax)
        ...

08048340 <printf@plt>:
 8048340:   ff 25 00 a0 04 08       jmp    *0x804a000
 8048346:   68 00 00 00 00          push   $0x0
 804834b:   e9 e0 ff ff ff          jmp    8048330 <_init+0x38>

08048350 <getchar@plt>:
 8048350:   ff 25 04 a0 04 08       jmp    *0x804a004
 8048356:   68 08 00 00 00          push   $0x8
 804835b:   e9 d0 ff ff ff          jmp    8048330 <_init+0x38>

08048360 <malloc@plt>:
 8048360:   ff 25 08 a0 04 08       jmp    *0x804a008
 8048366:   68 10 00 00 00          push   $0x10
 804836b:   e9 c0 ff ff ff          jmp    8048330 <_init+0x38>

08048370 <__gmon_start__@plt>:
 8048370:   ff 25 0c a0 04 08       jmp    *0x804a00c
 8048376:   68 18 00 00 00          push   $0x18
 804837b:   e9 b0 ff ff ff          jmp    8048330 <_init+0x38>

08048380 <__libc_start_main@plt>:
 8048380:   ff 25 10 a0 04 08       jmp    *0x804a010
 8048386:   68 20 00 00 00          push   $0x20
 804838b:   e9 a0 ff ff ff          jmp    8048330 <_init+0x38>

Disassembly of section .text:

08048390 <_start>:
 8048390:   31 ed                   xor    %ebp,%ebp
 8048392:   5e                      pop    %esi
 8048393:   89 e1                   mov    %esp,%ecx
 8048395:   83 e4 f0                and    $0xfffffff0,%esp
 8048398:   50                      push   %eax
 8048399:   54                      push   %esp
 804839a:   52                      push   %edx
 804839b:   68 f0 85 04 08          push   $0x80485f0
 80483a0:   68 80 85 04 08          push   $0x8048580
 80483a5:   51                      push   %ecx
 80483a6:   56                      push   %esi
 80483a7:   68 51 84 04 08          push   $0x8048451
 80483ac:   e8 cf ff ff ff          call   8048380 <__libc_start_main@plt>
 80483b1:   f4                      hlt    
 80483b2:   90                      nop
 80483b3:   90                      nop
 80483b4:   90                      nop
 80483b5:   90                      nop
 80483b6:   90                      nop
 80483b7:   90                      nop
 80483b8:   90                      nop
 80483b9:   90                      nop
 80483ba:   90                      nop
 80483bb:   90                      nop
 80483bc:   90                      nop
 80483bd:   90                      nop
 80483be:   90                      nop
 80483bf:   90                      nop

080483c0 <__do_global_dtors_aux>:
 80483c0:   55                      push   %ebp
 80483c1:   89 e5                   mov    %esp,%ebp
 80483c3:   53                      push   %ebx
 80483c4:   83 ec 04                sub    $0x4,%esp
 80483c7:   80 3d 2c a0 04 08 00    cmpb   $0x0,0x804a02c
 80483ce:   75 3f                   jne    804840f <__do_global_dtors_aux+0x4f>
 80483d0:   a1 30 a0 04 08          mov    0x804a030,%eax
 80483d5:   bb 20 9f 04 08          mov    $0x8049f20,%ebx
 80483da:   81 eb 1c 9f 04 08       sub    $0x8049f1c,%ebx
 80483e0:   c1 fb 02                sar    $0x2,%ebx
 80483e3:   83 eb 01                sub    $0x1,%ebx
 80483e6:   39 d8                   cmp    %ebx,%eax
 80483e8:   73 1e                   jae    8048408 <__do_global_dtors_aux+0x48>
 80483ea:   8d b6 00 00 00 00       lea    0x0(%esi),%esi
 80483f0:   83 c0 01                add    $0x1,%eax
 80483f3:   a3 30 a0 04 08          mov    %eax,0x804a030
 80483f8:   ff 14 85 1c 9f 04 08    call   *0x8049f1c(,%eax,4)
 80483ff:   a1 30 a0 04 08          mov    0x804a030,%eax
 8048404:   39 d8                   cmp    %ebx,%eax
 8048406:   72 e8                   jb     80483f0 <__do_global_dtors_aux+0x30>
 8048408:   c6 05 2c a0 04 08 01    movb   $0x1,0x804a02c
 804840f:   83 c4 04                add    $0x4,%esp
 8048412:   5b                      pop    %ebx
 8048413:   5d                      pop    %ebp
 8048414:   c3                      ret    
 8048415:   8d 74 26 00             lea    0x0(%esi,%eiz,1),%esi
 8048419:   8d bc 27 00 00 00 00    lea    0x0(%edi,%eiz,1),%edi

08048420 <frame_dummy>:
 8048420:   55                      push   %ebp
 8048421:   89 e5                   mov    %esp,%ebp
 8048423:   83 ec 18                sub    $0x18,%esp
 8048426:   a1 24 9f 04 08          mov    0x8049f24,%eax
 804842b:   85 c0                   test   %eax,%eax
 804842d:   74 12                   je     8048441 <frame_dummy+0x21>
 804842f:   b8 00 00 00 00          mov    $0x0,%eax
 8048434:   85 c0                   test   %eax,%eax
 8048436:   74 09                   je     8048441 <frame_dummy+0x21>
 8048438:   c7 04 24 24 9f 04 08    movl   $0x8049f24,(%esp)
 804843f:   ff d0                   call   *%eax
 8048441:   c9                      leave  
 8048442:   c3                      ret    
 8048443:   90                      nop

08048444 <add>:
 8048444:   55                      push   %ebp
 8048445:   89 e5                   mov    %esp,%ebp
 8048447:   8b 45 0c                mov    0xc(%ebp),%eax
 804844a:   8b 55 08                mov    0x8(%ebp),%edx
 804844d:   01 d0                   add    %edx,%eax
 804844f:   5d                      pop    %ebp
 8048450:   c3                      ret    

08048451 <main>:
 8048451:   55                      push   %ebp
 8048452:   89 e5                   mov    %esp,%ebp
 8048454:   56                      push   %esi
 8048455:   53                      push   %ebx
 8048456:   83 e4 f0                and    $0xfffffff0,%esp
 8048459:   83 ec 30                sub    $0x30,%esp
 804845c:   c7 05 1c a0 04 08 01    movl   $0x1,0x804a01c
 8048463:   00 00 00 
 8048466:   c7 05 20 a0 04 08 02    movl   $0x2,0x804a020
 804846d:   00 00 00 
 8048470:   c7 05 48 a0 04 08 11    movl   $0x11,0x804a048
 8048477:   00 00 00 
 804847a:   c7 05 34 a0 04 08 21    movl   $0x21,0x804a034
 8048481:   00 00 00 
 8048484:   a1 50 86 04 08          mov    0x8048650,%eax
 8048489:   89 44 24 14             mov    %eax,0x14(%esp)
 804848d:   a1 44 a0 04 08          mov    0x804a044,%eax
 8048492:   89 44 24 14             mov    %eax,0x14(%esp)
 8048496:   a1 54 86 04 08          mov    0x8048654,%eax
 804849b:   89 44 24 14             mov    %eax,0x14(%esp)
 804849f:   a1 38 a0 04 08          mov    0x804a038,%eax
 80484a4:   89 44 24 14             mov    %eax,0x14(%esp)
 80484a8:   c7 44 24 18 01 02 00    movl   $0x201,0x18(%esp)
 80484af:   00 
 80484b0:   bb 02 02 00 00          mov    $0x202,%ebx
 80484b5:   c7 05 3c a0 04 08 03    movl   $0x203,0x804a03c
 80484bc:   02 00 00 
 80484bf:   c7 44 24 1c 03 00 00    movl   $0x3,0x1c(%esp)
 80484c6:   00 
 80484c7:   c7 44 24 1c 06 00 00    movl   $0x6,0x1c(%esp)
 80484ce:   00 
 80484cf:   c7 05 24 a0 04 08 08    movl   $0x8,0x804a024
 80484d6:   00 00 00 
 80484d9:   8b 44 24 20             mov    0x20(%esp),%eax
 80484dd:   89 44 24 14             mov    %eax,0x14(%esp)
 80484e1:   89 74 24 14             mov    %esi,0x14(%esp)
 80484e5:   a1 40 a0 04 08          mov    0x804a040,%eax
 80484ea:   89 44 24 14             mov    %eax,0x14(%esp)
 80484ee:   c7 44 24 24 31 00 00    movl   $0x31,0x24(%esp)
 80484f5:   00 
 80484f6:   be 41 00 00 00          mov    $0x41,%esi
 80484fb:   8b 44 24 24             mov    0x24(%esp),%eax
 80484ff:   89 44 24 14             mov    %eax,0x14(%esp)
 8048503:   89 74 24 14             mov    %esi,0x14(%esp)
 8048507:   a1 28 a0 04 08          mov    0x804a028,%eax
 804850c:   89 44 24 14             mov    %eax,0x14(%esp)
 8048510:   c7 04 24 10 00 00 00    movl   $0x10,(%esp)
 8048517:   e8 44 fe ff ff          call   8048360 <malloc@plt>
 804851c:   89 44 24 28             mov    %eax,0x28(%esp)
 8048520:   b8 58 86 04 08          mov    $0x8048658,%eax
 8048525:   8b 54 24 28             mov    0x28(%esp),%edx
 8048529:   89 54 24 04             mov    %edx,0x4(%esp)
 804852d:   89 04 24                mov    %eax,(%esp)
 8048530:   e8 0b fe ff ff          call   8048340 <printf@plt>
 8048535:   c7 04 24 28 00 00 00    movl   $0x28,(%esp)
 804853c:   e8 1f fe ff ff          call   8048360 <malloc@plt>
 8048541:   89 44 24 2c             mov    %eax,0x2c(%esp)
 8048545:   b8 58 86 04 08          mov    $0x8048658,%eax
 804854a:   8b 54 24 2c             mov    0x2c(%esp),%edx
 804854e:   89 54 24 04             mov    %edx,0x4(%esp)
 8048552:   89 04 24                mov    %eax,(%esp)
 8048555:   e8 e6 fd ff ff          call   8048340 <printf@plt>
 804855a:   e8 f1 fd ff ff          call   8048350 <getchar@plt>
 804855f:   a1 3c a0 04 08          mov    0x804a03c,%eax
 8048564:   89 44 24 08             mov    %eax,0x8(%esp)
 8048568:   89 5c 24 04             mov    %ebx,0x4(%esp)
 804856c:   8b 44 24 18             mov    0x18(%esp),%eax
 8048570:   89 04 24                mov    %eax,(%esp)
 8048573:   e8 cc fe ff ff          call   8048444 <add>
 8048578:   8d 65 f8                lea    -0x8(%ebp),%esp
 804857b:   5b                      pop    %ebx
 804857c:   5e                      pop    %esi
 804857d:   5d                      pop    %ebp
 804857e:   c3                      ret    
 804857f:   90                      nop

08048580 <__libc_csu_init>:
 8048580:   55                      push   %ebp
 8048581:   57                      push   %edi
 8048582:   56                      push   %esi
 8048583:   53                      push   %ebx
 8048584:   e8 69 00 00 00          call   80485f2 <__i686.get_pc_thunk.bx>
 8048589:   81 c3 6b 1a 00 00       add    $0x1a6b,%ebx
 804858f:   83 ec 1c                sub    $0x1c,%esp
 8048592:   8b 6c 24 30             mov    0x30(%esp),%ebp
 8048596:   8d bb 20 ff ff ff       lea    -0xe0(%ebx),%edi
 804859c:   e8 57 fd ff ff          call   80482f8 <_init>
 80485a1:   8d 83 20 ff ff ff       lea    -0xe0(%ebx),%eax
 80485a7:   29 c7                   sub    %eax,%edi
 80485a9:   c1 ff 02                sar    $0x2,%edi
 80485ac:   85 ff                   test   %edi,%edi
 80485ae:   74 29                   je     80485d9 <__libc_csu_init+0x59>
 80485b0:   31 f6                   xor    %esi,%esi
 80485b2:   8d b6 00 00 00 00       lea    0x0(%esi),%esi
 80485b8:   8b 44 24 38             mov    0x38(%esp),%eax
 80485bc:   89 2c 24                mov    %ebp,(%esp)
 80485bf:   89 44 24 08             mov    %eax,0x8(%esp)
 80485c3:   8b 44 24 34             mov    0x34(%esp),%eax
 80485c7:   89 44 24 04             mov    %eax,0x4(%esp)
 80485cb:   ff 94 b3 20 ff ff ff    call   *-0xe0(%ebx,%esi,4)
 80485d2:   83 c6 01                add    $0x1,%esi
 80485d5:   39 fe                   cmp    %edi,%esi
 80485d7:   75 df                   jne    80485b8 <__libc_csu_init+0x38>
 80485d9:   83 c4 1c                add    $0x1c,%esp
 80485dc:   5b                      pop    %ebx
 80485dd:   5e                      pop    %esi
 80485de:   5f                      pop    %edi
 80485df:   5d                      pop    %ebp
 80485e0:   c3                      ret    
 80485e1:   eb 0d                   jmp    80485f0 <__libc_csu_fini>
 80485e3:   90                      nop
 80485e4:   90                      nop
 80485e5:   90                      nop
 80485e6:   90                      nop
 80485e7:   90                      nop
 80485e8:   90                      nop
 80485e9:   90                      nop
 80485ea:   90                      nop
 80485eb:   90                      nop
 80485ec:   90                      nop
 80485ed:   90                      nop
 80485ee:   90                      nop
 80485ef:   90                      nop

080485f0 <__libc_csu_fini>:
 80485f0:   f3 c3                   repz ret 

080485f2 <__i686.get_pc_thunk.bx>:
 80485f2:   8b 1c 24                mov    (%esp),%ebx
 80485f5:   c3                      ret    
 80485f6:   90                      nop
 80485f7:   90                      nop
 80485f8:   90                      nop
 80485f9:   90                      nop
 80485fa:   90                      nop
 80485fb:   90                      nop
 80485fc:   90                      nop
 80485fd:   90                      nop
 80485fe:   90                      nop
 80485ff:   90                      nop

08048600 <__do_global_ctors_aux>:
 8048600:   55                      push   %ebp
 8048601:   89 e5                   mov    %esp,%ebp
 8048603:   53                      push   %ebx
 8048604:   83 ec 04                sub    $0x4,%esp
 8048607:   a1 14 9f 04 08          mov    0x8049f14,%eax
 804860c:   83 f8 ff                cmp    $0xffffffff,%eax
 804860f:   74 13                   je     8048624 <__do_global_ctors_aux+0x24>
 8048611:   bb 14 9f 04 08          mov    $0x8049f14,%ebx
 8048616:   66 90                   xchg   %ax,%ax
 8048618:   83 eb 04                sub    $0x4,%ebx
 804861b:   ff d0                   call   *%eax
 804861d:   8b 03                   mov    (%ebx),%eax
 804861f:   83 f8 ff                cmp    $0xffffffff,%eax
 8048622:   75 f4                   jne    8048618 <__do_global_ctors_aux+0x18>
 8048624:   83 c4 04                add    $0x4,%esp
 8048627:   5b                      pop    %ebx
 8048628:   5d                      pop    %ebp
 8048629:   c3                      ret    
 804862a:   90                      nop
 804862b:   90                      nop

Disassembly of section .fini:

0804862c <_fini>:
 804862c:   53                      push   %ebx
 804862d:   83 ec 08                sub    $0x8,%esp
 8048630:   e8 00 00 00 00          call   8048635 <_fini+0x9>
 8048635:   5b                      pop    %ebx
 8048636:   81 c3 bf 19 00 00       add    $0x19bf,%ebx
 804863c:   e8 7f fd ff ff          call   80483c0 <__do_global_dtors_aux>
 8048641:   83 c4 08                add    $0x8,%esp
 8048644:   5b                      pop    %ebx
 8048645:   c3                      ret    

Disassembly of section .rodata:

08048648 <_fp_hw>:
 8048648:   03 00                   add    (%eax),%eax
        ...

0804864c <_IO_stdin_used>:
 804864c:   01 00                   add    %eax,(%eax)
 804864e:   02 00                   add    (%eax),%al

08048650 <const_extern_file_int>:
 8048650:   11 00                   adc    %eax,(%eax)
        ...

08048654 <const_static_file_int>:
 8048654:   21 00                   and    %eax,(%eax)
 8048656:   00 00                   add    %al,(%eax)
 8048658:   25                      .byte 0x25
 8048659:   70 0a                   jo     8048665 <const_static_file_int+0x11>
        ...

Disassembly of section .eh_frame_hdr:

0804865c <.eh_frame_hdr>:
 804865c:   01 1b                   add    %ebx,(%ebx)
 804865e:   03 3b                   add    (%ebx),%edi
 8048660:   38 00                   cmp    %al,(%eax)
 8048662:   00 00                   add    %al,(%eax)
 8048664:   06                      push   %es
 8048665:   00 00                   add    %al,(%eax)
 8048667:   00 d4                   add    %dl,%ah
 8048669:   fc                      cld    
 804866a:   ff                      (bad)  
 804866b:   ff 54 00 00             call   *0x0(%eax,%eax,1)
 804866f:   00 e8                   add    %ch,%al
 8048671:   fd                      std    
 8048672:   ff                      (bad)  
 8048673:   ff                      (bad)  
 8048674:   78 00                   js     8048676 <const_static_file_int+0x22>
 8048676:   00 00                   add    %al,(%eax)
 8048678:   f5                      cmc    
 8048679:   fd                      std    
 804867a:   ff                      (bad)  
 804867b:   ff 98 00 00 00 24       lcall  *0x24000000(%eax)
 8048681:   ff                      (bad)  
 8048682:   ff                      (bad)  
 8048683:   ff c4                   inc    %esp
 8048685:   00 00                   add    %al,(%eax)
 8048687:   00 94 ff ff ff 00 01    add    %dl,0x100ffff(%edi,%edi,8)
 804868e:   00 00                   add    %al,(%eax)
 8048690:   96                      xchg   %eax,%esi
 8048691:   ff                      (bad)  
 8048692:   ff                      (bad)  
 8048693:   ff 14 01                call   *(%ecx,%eax,1)
        ...

Disassembly of section .eh_frame:

08048698 <__FRAME_END__-0xec>:
 8048698:   14 00                   adc    $0x0,%al
 804869a:   00 00                   add    %al,(%eax)
 804869c:   00 00                   add    %al,(%eax)
 804869e:   00 00                   add    %al,(%eax)
 80486a0:   01 7a 52                add    %edi,0x52(%edx)
 80486a3:   00 01                   add    %al,(%ecx)
 80486a5:   7c 08                   jl     80486af <const_static_file_int+0x5b>
 80486a7:   01 1b                   add    %ebx,(%ebx)
 80486a9:   0c 04                   or     $0x4,%al
 80486ab:   04 88                   add    $0x88,%al
 80486ad:   01 00                   add    %eax,(%eax)
 80486af:   00 20                   add    %ah,(%eax)
 80486b1:   00 00                   add    %al,(%eax)
 80486b3:   00 1c 00                add    %bl,(%eax,%eax,1)
 80486b6:   00 00                   add    %al,(%eax)
 80486b8:   78 fc                   js     80486b6 <const_static_file_int+0x62>
 80486ba:   ff                      (bad)  
 80486bb:   ff 60 00                jmp    *0x0(%eax)
 80486be:   00 00                   add    %al,(%eax)
 80486c0:   00 0e                   add    %cl,(%esi)
 80486c2:   08 46 0e                or     %al,0xe(%esi)
 80486c5:   0c 4a                   or     $0x4a,%al
 80486c7:   0f 0b                   ud2    
 80486c9:   74 04                   je     80486cf <const_static_file_int+0x7b>
 80486cb:   78 00                   js     80486cd <const_static_file_int+0x79>
 80486cd:   3f                      aas    
 80486ce:   1a 3b                   sbb    (%ebx),%bh
 80486d0:   2a 32                   sub    (%edx),%dh
 80486d2:   24 22                   and    $0x22,%al
 80486d4:   1c 00                   sbb    $0x0,%al
 80486d6:   00 00                   add    %al,(%eax)
 80486d8:   40                      inc    %eax
 80486d9:   00 00                   add    %al,(%eax)
 80486db:   00 68 fd                add    %ch,-0x3(%eax)
 80486de:   ff                      (bad)  
 80486df:   ff 0d 00 00 00 00       decl   0x0
 80486e5:   41                      inc    %ecx
 80486e6:   0e                      push   %cs
 80486e7:   08 85 02 42 0d 05       or     %al,0x50d4202(%ebp)
 80486ed:   49                      dec    %ecx
 80486ee:   0c 04                   or     $0x4,%al
 80486f0:   04 c5                   add    $0xc5,%al
 80486f2:   00 00                   add    %al,(%eax)
 80486f4:   28 00                   sub    %al,(%eax)
 80486f6:   00 00                   add    %al,(%eax)
 80486f8:   60                      pusha  
 80486f9:   00 00                   add    %al,(%eax)
 80486fb:   00 55 fd                add    %dl,-0x3(%ebp)
 80486fe:   ff                      (bad)  
 80486ff:   ff 2e                   ljmp   *(%esi)
 8048701:   01 00                   add    %eax,(%eax)
 8048703:   00 00                   add    %al,(%eax)
 8048705:   41                      inc    %ecx
 8048706:   0e                      push   %cs
 8048707:   08 85 02 42 0d 05       or     %al,0x50d4202(%ebp)
 804870d:   02 61 83                add    -0x7d(%ecx),%ah
 8048710:   04 86                   add    $0x86,%al
 8048712:   03 02                   add    (%edx),%eax
 8048714:   c7 c3 41 c6 41 0c       mov    $0xc41c641,%ebx
 804871a:   04 04                   add    $0x4,%al
 804871c:   c5 00                   lds    (%eax),%eax
 804871e:   00 00                   add    %al,(%eax)
 8048720:   38 00                   cmp    %al,(%eax)
 8048722:   00 00                   add    %al,(%eax)
 8048724:   8c 00                   mov    %es,(%eax)
 8048726:   00 00                   add    %al,(%eax)
 8048728:   58                      pop    %eax
 8048729:   fe                      (bad)  
 804872a:   ff                      (bad)  
 804872b:   ff 61 00                jmp    *0x0(%ecx)
 804872e:   00 00                   add    %al,(%eax)
 8048730:   00 41 0e                add    %al,0xe(%ecx)
 8048733:   08 85 02 41 0e 0c       or     %al,0xc0e4102(%ebp)
 8048739:   87 03                   xchg   %eax,(%ebx)
 804873b:   41                      inc    %ecx
 804873c:   0e                      push   %cs
 804873d:   10 86 04 41 0e 14       adc    %al,0x140e4104(%esi)
 8048743:   83 05 4e 0e 30 02 4a    addl   $0x4a,0x2300e4e
 804874a:   0e                      push   %cs
 804874b:   14 41                   adc    $0x41,%al
 804874d:   0e                      push   %cs
 804874e:   10 c3                   adc    %al,%bl
 8048750:   41                      inc    %ecx
 8048751:   0e                      push   %cs
 8048752:   0c c6                   or     $0xc6,%al
 8048754:   41                      inc    %ecx
 8048755:   0e                      push   %cs
 8048756:   08 c7                   or     %al,%bh
 8048758:   41                      inc    %ecx
 8048759:   0e                      push   %cs
 804875a:   04 c5                   add    $0xc5,%al
 804875c:   10 00                   adc    %al,(%eax)
 804875e:   00 00                   add    %al,(%eax)
 8048760:   c8 00 00 00             enter  $0x0,$0x0
 8048764:   8c fe                   mov    %?,%esi
 8048766:   ff                      (bad)  
 8048767:   ff 02                   incl   (%edx)
 8048769:   00 00                   add    %al,(%eax)
 804876b:   00 00                   add    %al,(%eax)
 804876d:   00 00                   add    %al,(%eax)
 804876f:   00 10                   add    %dl,(%eax)
 8048771:   00 00                   add    %al,(%eax)
 8048773:   00 dc                   add    %bl,%ah
 8048775:   00 00                   add    %al,(%eax)
 8048777:   00 7a fe                add    %bh,-0x2(%edx)
 804877a:   ff                      (bad)  
 804877b:   ff 04 00                incl   (%eax,%eax,1)
 804877e:   00 00                   add    %al,(%eax)
 8048780:   00 00                   add    %al,(%eax)
        ...

08048784 <__FRAME_END__>:
 8048784:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .ctors:

08049f14 <__CTOR_LIST__>:
 8049f14:   ff                      (bad)  
 8049f15:   ff                      (bad)  
 8049f16:   ff                      (bad)  
 8049f17:   ff 00                   incl   (%eax)

08049f18 <__CTOR_END__>:
 8049f18:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .dtors:

08049f1c <__DTOR_LIST__>:
 8049f1c:   ff                      (bad)  
 8049f1d:   ff                      (bad)  
 8049f1e:   ff                      (bad)  
 8049f1f:   ff 00                   incl   (%eax)

08049f20 <__DTOR_END__>:
 8049f20:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .jcr:

08049f24 <__JCR_END__>:
 8049f24:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .dynamic:

08049f28 <_DYNAMIC>:
 8049f28:   01 00                   add    %eax,(%eax)
 8049f2a:   00 00                   add    %al,(%eax)
 8049f2c:   10 00                   adc    %al,(%eax)
 8049f2e:   00 00                   add    %al,(%eax)
 8049f30:   0c 00                   or     $0x0,%al
 8049f32:   00 00                   add    %al,(%eax)
 8049f34:   f8                      clc    
 8049f35:   82                      (bad)  
 8049f36:   04 08                   add    $0x8,%al
 8049f38:   0d 00 00 00 2c          or     $0x2c000000,%eax
 8049f3d:   86 04 08                xchg   %al,(%eax,%ecx,1)
 8049f40:   f5                      cmc    
 8049f41:   fe                      (bad)  
 8049f42:   ff 6f ac                ljmp   *-0x54(%edi)
 8049f45:   81 04 08 05 00 00 00    addl   $0x5,(%eax,%ecx,1)
 8049f4c:   3c 82                   cmp    $0x82,%al
 8049f4e:   04 08                   add    $0x8,%al
 8049f50:   06                      push   %es
 8049f51:   00 00                   add    %al,(%eax)
 8049f53:   00 cc                   add    %cl,%ah
 8049f55:   81 04 08 0a 00 00 00    addl   $0xa,(%eax,%ecx,1)
 8049f5c:   5b                      pop    %ebx
 8049f5d:   00 00                   add    %al,(%eax)
 8049f5f:   00 0b                   add    %cl,(%ebx)
 8049f61:   00 00                   add    %al,(%eax)
 8049f63:   00 10                   add    %dl,(%eax)
 8049f65:   00 00                   add    %al,(%eax)
 8049f67:   00 15 00 00 00 00       add    %dl,0x0
 8049f6d:   00 00                   add    %al,(%eax)
 8049f6f:   00 03                   add    %al,(%ebx)
 8049f71:   00 00                   add    %al,(%eax)
 8049f73:   00 f4                   add    %dh,%ah
 8049f75:   9f                      lahf   
 8049f76:   04 08                   add    $0x8,%al
 8049f78:   02 00                   add    (%eax),%al
 8049f7a:   00 00                   add    %al,(%eax)
 8049f7c:   28 00                   sub    %al,(%eax)
 8049f7e:   00 00                   add    %al,(%eax)
 8049f80:   14 00                   adc    $0x0,%al
 8049f82:   00 00                   add    %al,(%eax)
 8049f84:   11 00                   adc    %eax,(%eax)
 8049f86:   00 00                   add    %al,(%eax)
 8049f88:   17                      pop    %ss
 8049f89:   00 00                   add    %al,(%eax)
 8049f8b:   00 d0                   add    %dl,%al
 8049f8d:   82                      (bad)  
 8049f8e:   04 08                   add    $0x8,%al
 8049f90:   11 00                   adc    %eax,(%eax)
 8049f92:   00 00                   add    %al,(%eax)
 8049f94:   c8 82 04 08             enter  $0x482,$0x8
 8049f98:   12 00                   adc    (%eax),%al
 8049f9a:   00 00                   add    %al,(%eax)
 8049f9c:   08 00                   or     %al,(%eax)
 8049f9e:   00 00                   add    %al,(%eax)
 8049fa0:   13 00                   adc    (%eax),%eax
 8049fa2:   00 00                   add    %al,(%eax)
 8049fa4:   08 00                   or     %al,(%eax)
 8049fa6:   00 00                   add    %al,(%eax)
 8049fa8:   fe                      (bad)  
 8049fa9:   ff                      (bad)  
 8049faa:   ff 6f a8                ljmp   *-0x58(%edi)
 8049fad:   82                      (bad)  
 8049fae:   04 08                   add    $0x8,%al
 8049fb0:   ff                      (bad)  
 8049fb1:   ff                      (bad)  
 8049fb2:   ff 6f 01                ljmp   *0x1(%edi)
 8049fb5:   00 00                   add    %al,(%eax)
 8049fb7:   00 f0                   add    %dh,%al
 8049fb9:   ff                      (bad)  
 8049fba:   ff 6f 98                ljmp   *-0x68(%edi)
 8049fbd:   82                      (bad)  
 8049fbe:   04 08                   add    $0x8,%al
        ...

Disassembly of section .got:

08049ff0 <.got>:
 8049ff0:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .got.plt:

08049ff4 <_GLOBAL_OFFSET_TABLE_>:
 8049ff4:   28 9f 04 08 00 00       sub    %bl,0x804(%edi)
 8049ffa:   00 00                   add    %al,(%eax)
 8049ffc:   00 00                   add    %al,(%eax)
 8049ffe:   00 00                   add    %al,(%eax)
 804a000:   46                      inc    %esi
 804a001:   83 04 08 56             addl   $0x56,(%eax,%ecx,1)
 804a005:   83 04 08 66             addl   $0x66,(%eax,%ecx,1)
 804a009:   83 04 08 76             addl   $0x76,(%eax,%ecx,1)
 804a00d:   83 04 08 86             addl   $0xffffff86,(%eax,%ecx,1)
 804a011:   83                      .byte 0x83
 804a012:   04 08                   add    $0x8,%al

Disassembly of section .data:

0804a014 <__data_start>:
 804a014:   00 00                   add    %al,(%eax)
        ...

0804a018 <__dso_handle>:
 804a018:   00 00                   add    %al,(%eax)
        ...

0804a01c <extern_file_int>:
 804a01c:   01 00                   add    %eax,(%eax)
        ...

0804a020 <static_file_int>:
 804a020:   02 00                   add    (%eax),%al
        ...

0804a024 <static_block_int.2203>:
 804a024:   05 00 00 00 51          add    $0x51000000,%eax

0804a028 <const_static_block_int.2209>:
 804a028:   51                      push   %ecx
 804a029:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .bss:

0804a02c <completed.6159>:
 804a02c:   00 00                   add    %al,(%eax)
        ...

0804a030 <dtor_idx.6161>:
 804a030:   00 00                   add    %al,(%eax)
        ...

0804a034 <static_file_int_null>:
 804a034:   00 00                   add    %al,(%eax)
        ...

0804a038 <const_static_file_int_null>:
 804a038:   00 00                   add    %al,(%eax)
        ...

0804a03c <static_block_int_null.2200>:
 804a03c:   00 00                   add    %al,(%eax)
        ...

0804a040 <const_static_block_int_null.2206>:
 804a040:   00 00                   add    %al,(%eax)
        ...

0804a044 <const_extern_file_int_null>:
 804a044:   00 00                   add    %al,(%eax)
        ...

0804a048 <extern_file_int_null>:
 804a048:   00 00                   add    %al,(%eax)
        ...

Disassembly of section .comment:

00000000 <.comment>:
   0:   47                      inc    %edi
   1:   43                      inc    %ebx
   2:   43                      inc    %ebx
   3:   3a 20                   cmp    (%eax),%ah
   5:   28 55 62                sub    %dl,0x62(%ebp)
   8:   75 6e                   jne    78 <_init-0x8048280>
   a:   74 75                   je     81 <_init-0x8048277>
   c:   2f                      das    
   d:   4c                      dec    %esp
   e:   69 6e 61 72 6f 20 34    imul   $0x34206f72,0x61(%esi),%ebp
  15:   2e 36 2e 33 2d 31 75    cs ss xor %cs:%ss:0x75627531,%ebp
  1c:   62 75 
  1e:   6e                      outsb  %ds:(%esi),(%dx)
  1f:   74 75                   je     96 <_init-0x8048262>
  21:   35 29 20 34 2e          xor    $0x2e342029,%eax
  26:   36 2e 33 00             ss xor %cs:%ss:(%eax),%eax
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器...
    shannoon阅读 1,358评论 0 1
  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 1,133评论 0 2
  • 注:这是第三遍读《C语言深度解剖》,想想好像自从大学开始就没读完过几本书,其中谭浩强的那本《C语言程序设计(第四版...
    HavenXie阅读 1,706评论 1 6
  • ????? 是的,我喜欢。 吃 我喜欢吃,以前不喜欢甜的...
    hddy5188阅读 214评论 0 0
  • 热力图是个很直观的数据展现方法,从低温的白到高温的红,代表不同数值的高低或者聚集度。在R语言中,一个heatmap...
    只是不在意阅读 6,710评论 0 1