全局變量和局部變量在內(nèi)存里的區(qū)別(轉(zhuǎn))

一蛉幸、預(yù)備知識(shí)—程序的內(nèi)存分配
一個(gè)由c/C++編譯的程序占用的內(nèi)存分為以下幾個(gè)部分
1张抄、棧區(qū)(stack)— 由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值碑定,局部變量的值等强缘。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧督惰。
2、堆區(qū)(heap) — 一般由程序員分配釋放旅掂, 若程序員不釋放赏胚,程序結(jié)束時(shí)可能由OS回收 。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事商虐,分配方式倒是類似于鏈表觉阅。
3、全局區(qū)(靜態(tài)區(qū))(static)—秘车,全局變量和靜態(tài)變量的存儲(chǔ)是放在一塊的典勇,初始化的全局變量和靜態(tài)變量在一塊區(qū)域(.data),未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域(.bss)叮趴。 - 程序結(jié)束后由系統(tǒng)釋放割笙。
4、文字常量區(qū) —常量字符串就是放在這里的(.rodata)眯亦。 程序結(jié)束后由系統(tǒng)釋放伤溉。
5、程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼(.text)妻率。

二乱顾、例子程序
這是一個(gè)前輩寫的,非常詳細(xì)
//main.cpp
int a = 0; // 全局初始化區(qū)
char *p1; // 全局未初始化區(qū)
main()
{
int b; // 棧區(qū)
char s[] = "abc"; // 棧區(qū)
char *p2; // 棧區(qū)
char *p3 = "123456"; // "123456/0" 在常量區(qū)宫静,p3在棧區(qū)
static int c =0; // 全局(靜態(tài))初始化區(qū)

p1 = (char *)malloc(10);
p2 = (char *)malloc(20); // 分配得來(lái)的10和20字節(jié)的區(qū)域就在堆區(qū)

strcpy(p1, "123456"); // "123456/0" 放在常量區(qū)走净,編譯器可能會(huì)將它
// 與p3所指向的"123456"優(yōu)化成一個(gè)地方。
}

==============================================================
static全局變量與普通的全局變量有什么區(qū)別孤里?static局部變量和普通局部變量有什么區(qū)別伏伯?static函數(shù)與普通函數(shù)有什么區(qū)別?
static全局變量與普通的全局變量有什么區(qū)別捌袜?static局部變量和普通局部變量有什么區(qū)別说搅?static函數(shù)與普通函數(shù)有什么區(qū)別?   答:1) 全局變量(外部變量)的說(shuō)明之前再冠以static 就構(gòu)成了靜態(tài)的全局變量琢蛤。全局變量本身就是靜態(tài)存儲(chǔ)方式蜓堕, 靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲(chǔ)方式。 這兩者在存儲(chǔ)方式上并無(wú)不同博其。這兩者的區(qū)別在于非靜態(tài)全局變量的作用域是整個(gè)源程序套才, 當(dāng)一個(gè)源程序由多個(gè)源文件組成時(shí),非靜態(tài)的全局變量在各個(gè)源文件中都是有效的慕淡。 而靜態(tài)全局變量則限制了其作用域背伴, 即只在定義該變量的源文件內(nèi)有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個(gè)源文件內(nèi)傻寂,只能為該源文件內(nèi)的函數(shù)公用息尺,因此可以避免在其它源文件中引起錯(cuò)誤。

  1. 從以上分析可以看出疾掰, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲(chǔ)方式即改變了它的生存期搂誉。把全局變量改變?yōu)殪o態(tài)變量后是改變了它的作用域,限制了它的使用范圍静檬√堪茫   3) static函數(shù)與普通函數(shù)作用域不同,僅在本文件。只在當(dāng)前源文件中使用的函數(shù)應(yīng)該說(shuō)明為內(nèi)部函數(shù)(static)拂檩,內(nèi)部函數(shù)應(yīng)該在當(dāng)前源文件中說(shuō)明和定義侮腹。對(duì)于可在當(dāng)前源文件以外使用的函數(shù),應(yīng)該在一個(gè)頭文件中說(shuō)明稻励,要使用這些函數(shù)的源文件要包含這個(gè)頭文件   
    綜上所述:static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次父阻,防止在其他文件單元中被引用;   static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值望抽;   static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份加矛,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝

==============================================================
一個(gè)C語(yǔ)言變量分配的實(shí)際例子:

我們來(lái)看看在可執(zhí)行文件中,變量們會(huì)被分配在哪些區(qū)里.這里以可執(zhí)行文件為例子,可執(zhí)行文件有固定的內(nèi)存加載地址糠聪,符號(hào)(函數(shù)/變量的名字)將來(lái)在內(nèi)存里的地址連接器是可以提前確定的荒椭。

源程序編譯連接的結(jié)果是形成1堆匯編指令代碼谐鼎,大致分為.text .data .bss等幾個(gè)節(jié)區(qū)(section)舰蟆。對(duì)于.exe文件和.so文件,全局和靜態(tài)變量都放在.data 或.bss段(gas把源文件從頭到尾掃描1遍狸棍,才知道一個(gè)變量的全部情況:是否定義身害;類型;是否初始化草戈。然后把初始化的變量在.data段里分配位置和 空間塌鸯,把沒初始化的變量在.bss段里分配位置和空間,沒定義的變量分配在.undef段)唐片。匯編指令代碼里全局變量表現(xiàn)為一個(gè)內(nèi)存地址(全局變量在目標(biāo) 文件里是一個(gè)偏移值丙猬,加載進(jìn)內(nèi)存里是一個(gè)內(nèi)存地址)。臨時(shí)變量在匯編代碼里變成ebp/esp+n费韭,表現(xiàn)為一個(gè)堆棧地址茧球,化為程序正文(.text)的一 部分。有些變量的最終內(nèi)存地址在加載進(jìn)內(nèi)存之前還不能確定星持,需要加載進(jìn)內(nèi)存才可以計(jì)算出來(lái).
全局變量 作用域是跨越多個(gè)源程序的抢埋。因此全局變量不能重名。靜態(tài)變量作用域是位于單個(gè)源程序內(nèi)。多個(gè)源程序可以有同名的全局靜態(tài)變量揪垄。本例中穷吮,為了區(qū)分多個(gè)同名的靜態(tài)變量,gcc 用 c444和c444.0 來(lái)加以區(qū)別饥努。

[test@redhat]# more aaa.c# include <stdio.h>
int a111 = 0; # 全局變量 已初始化char *p111 = "654321"; # 全局指針變量 已經(jīng)初始化static int c444 = 9; # 靜態(tài)全局變量 已經(jīng)初始化static int c555; # 靜態(tài)全局變量 未初始化main() { int b222; # 局部變量 char s333[] = "abc"; # 局部變量 char *p222; # 局部變量 char *p333 = "123456"; # 局部變量 static int c444 =0; # 已初始化靜態(tài)局部變量,與前面靜態(tài)全局變量重名 p111 = (char *)malloc(10); p222 = (char *)malloc(20);
strcpy(p111, "123456");}
[test@redhat]# gcc -o aaa ./aaa.c

[test@redhat]# readelf -a ./aaaELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: Intel 80386 Version: 0x1 Entry point address: 0x80482d0 Start of program headers: 52 (bytes into file) Start of section headers: 2040 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 7 Size of section headers: 40 (bytes) Number of section headers: 27 Section header string table index: 24
Section Headers: Addr是文件加載進(jìn)內(nèi)存時(shí)捡鱼,每個(gè)section在內(nèi)存中的虛擬地址 [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .interp PROGBITS 08048114 000114 000013 00 A 0 0 1 [ 2] .note.ABI-tag NOTE 08048128 000128 000020 00 A 0 0 4 [ 3] .hash HASH 08048148 000148 00002c 04 A 4 0 4 [ 4] .dynsym DYNSYM 08048174 000174 000060 10 A 5 1 4 [ 5] .dynstr STRTAB 080481d4 0001d4 000053 00 A 0 0 1 [ 6] .gnu.version VERSYM 08048228 000228 00000c 02 A 4 0 2 [ 7] .gnu.version_r VERNEED 08048234 000234 000020 00 A 5 1 4 [ 8] .rel.dyn REL 08048254 000254 000008 08 A 4 0 4 [ 9] .rel.plt REL 0804825c 00025c 000018 08 A 4 b 4 [10] .init PROGBITS 08048274 000274 000017 00 AX 0 0 4 [11] .plt PROGBITS 0804828c 00028c 000040 04 AX 0 0 4 [12] .text PROGBITS 080482d0 0002d0 0001e4 00 AX 0 0 16 [13] .fini PROGBITS 080484b4 0004b4 00001b 00 AX 0 0 4 [14] .rodata PROGBITS 080484d0 0004d0 00001a 00 A 0 0 4 [15] .eh_frame PROGBITS 080484ec 0004ec 000004 00 A 0 0 4 [16] .data PROGBITS 080494f0 0004f0 00001c 00 WA 0 0 4 [17] .dynamic DYNAMIC 0804950c 00050c 0000c8 08 WA 5 0 4 [18] .ctors PROGBITS 080495d4 0005d4 000008 00 WA 0 0 4 [19] .dtors PROGBITS 080495dc 0005dc 000008 00 WA 0 0 4 [20] .jcr PROGBITS 080495e4 0005e4 000004 00 WA 0 0 4 [21] .got PROGBITS 080495e8 0005e8 00001c 04 WA 0 0 4 [22] .bss NOBITS 08049604 000604 000008 00 WA 0 0 4 [23] .comment PROGBITS 00000000 000604 000126 00 0 0 1 [24] .shstrtab STRTAB 00000000 00072a 0000ce 00 0 0 1 [25] .symtab SYMTAB 00000000 000c30 0004c0 10 26 2f 4 [26] .strtab STRTAB 00000000 0010f0 000275 00 0 0 1
Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000034 0x08048034 0x08048034 0x000e0 0x000e0 R E 0x4 INTERP 0x000114 0x08048114 0x08048114 0x00013 0x00013 R 0x1 [Requesting program interpreter: /lib/ld-linux.so.2] LOAD 0x000000 0x08048000 0x08048000 0x004f0 0x004f0 R E 0x1000 LOAD 0x0004f0 0x080494f0 0x080494f0 0x00114 0x0011c RW 0x1000 DYNAMIC 0x00050c 0x0804950c 0x0804950c 0x000c8 0x000c8 RW 0x4 NOTE 0x000128 0x08048128 0x08048128 0x00020 0x00020 R 0x4 STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4

Symbol table '.symtab' contains 76 entries:
對(duì)于.exe文件,符號(hào)的Value 是將來(lái)加載進(jìn)內(nèi)存中的真實(shí)地址酷愧;對(duì)于.so文件Value需要重定位. Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 08048114 0 SECTION LOCAL DEFAULT 1 2: 08048128 0 SECTION LOCAL DEFAULT 2 3: 08048148 0 SECTION LOCAL DEFAULT 3 4: 08048174 0 SECTION LOCAL DEFAULT 4 5: 080481d4 0 SECTION LOCAL DEFAULT 5 6: 08048228 0 SECTION LOCAL DEFAULT 6 7: 08048234 0 SECTION LOCAL DEFAULT 7 8: 08048254 0 SECTION LOCAL DEFAULT 8 9: 0804825c 0 SECTION LOCAL DEFAULT 9 10: 08048274 0 SECTION LOCAL DEFAULT 10 11: 0804828c 0 SECTION LOCAL DEFAULT 11 12: 080482d0 0 SECTION LOCAL DEFAULT 12 13: 080484b4 0 SECTION LOCAL DEFAULT 13 14: 080484d0 0 SECTION LOCAL DEFAULT 14 15: 080484ec 0 SECTION LOCAL DEFAULT 15 16: 080494f0 0 SECTION LOCAL DEFAULT 16 17: 0804950c 0 SECTION LOCAL DEFAULT 17 18: 080495d4 0 SECTION LOCAL DEFAULT 18 19: 080495dc 0 SECTION LOCAL DEFAULT 19 20: 080495e4 0 SECTION LOCAL DEFAULT 20 21: 080495e8 0 SECTION LOCAL DEFAULT 21 22: 08049604 0 SECTION LOCAL DEFAULT 22 23: 00000000 0 SECTION LOCAL DEFAULT 23 24: 00000000 0 SECTION LOCAL DEFAULT 24 25: 00000000 0 SECTION LOCAL DEFAULT 25 26: 00000000 0 SECTION LOCAL DEFAULT 26 27: 080482f4 0 FUNC LOCAL DEFAULT 12 call_gmon_start 28: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 29: 080495d4 0 OBJECT LOCAL DEFAULT 18 CTOR_LIST 30: 080495dc 0 OBJECT LOCAL DEFAULT 19 DTOR_LIST 31: 080484ec 0 OBJECT LOCAL DEFAULT 15 EH_FRAME_BEGIN 32: 080495e4 0 OBJECT LOCAL DEFAULT 20 JCR_LIST 33: 080494f8 0 OBJECT LOCAL DEFAULT 16 p.0 34: 08049604 1 OBJECT LOCAL DEFAULT 22 completed.1 35: 08048320 0 FUNC LOCAL DEFAULT 12 __do_global_dtors_aux 36: 08048360 0 FUNC LOCAL DEFAULT 12 frame_dummy 37: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c 38: 080495d8 0 OBJECT LOCAL DEFAULT 18 CTOR_END 39: 080495e0 0 OBJECT LOCAL DEFAULT 19 DTOR_END 40: 080484ec 0 OBJECT LOCAL DEFAULT 15 FRAME_END 41: 080495e4 0 OBJECT LOCAL DEFAULT 20 JCR_END 42: 08048490 0 FUNC LOCAL DEFAULT 12 __do_global_ctors_aux 43: 00000000 0 FILE LOCAL DEFAULT ABS aaa.c 44: 08049504 4 OBJECT LOCAL DEFAULT 16 c444 # static變量為L(zhǎng)OCAL綁定屬性(也即作用域) 已初始化靜態(tài)變量存放在.data 45: 08049508 4 OBJECT LOCAL DEFAULT 16 c444.0 # 已初始化靜態(tài)變量存放在.data (多個(gè)源文件可以定義同名的靜態(tài)變量) 46: 08049608 4 OBJECT LOCAL DEFAULT 22 c555 # 未初始化靜態(tài)變量存放在.bss 47: 080494fc 4 OBJECT GLOBAL DEFAULT 16 a111 # 全局變量為GLOBAL綁定屬性 已初始全局變量存放在.data 48: 0804950c 0 OBJECT GLOBAL DEFAULT 17 _DYNAMIC 49: 080484d0 4 OBJECT GLOBAL DEFAULT 14 _fp_hw 50: 080494f0 0 NOTYPE GLOBAL HIDDEN ABS __fini_array_end 51: 080494f4 0 OBJECT GLOBAL HIDDEN 16 __dso_handle 52: 08048440 66 FUNC GLOBAL DEFAULT 12 __libc_csu_fini 53: 08048274 0 FUNC GLOBAL DEFAULT 10 _init 54: 0804829c 427 FUNC GLOBAL DEFAULT UND malloc@@GLIBC_2.0 55: 080482d0 0 FUNC GLOBAL DEFAULT 12 _start 56: 080494f0 0 NOTYPE GLOBAL HIDDEN ABS __fini_array_start 57: 080483f0 71 FUNC GLOBAL DEFAULT 12 __libc_csu_init 58: 08049500 4 OBJECT GLOBAL DEFAULT 16 p111 59: 08049604 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 60: 0804838c 89 FUNC GLOBAL DEFAULT 12 main 61: 080482ac 251 FUNC GLOBAL DEFAULT UND __libc_start_main@@GLIBC _ 62: 080494f0 0 NOTYPE GLOBAL HIDDEN ABS __init_array_end 63: 080494f0 0 NOTYPE WEAK DEFAULT 16 data_start 64: 080484b4 0 FUNC GLOBAL DEFAULT 13 _fini 65: 080494f0 0 NOTYPE GLOBAL HIDDEN ABS __preinit_array_end 66: 08049604 0 NOTYPE GLOBAL DEFAULT ABS _edata 67: 080495e8 0 OBJECT GLOBAL DEFAULT 21 GLOBAL_OFFSET_TABLE 68: 0804960c 0 NOTYPE GLOBAL DEFAULT ABS _end 69: 080494f0 0 NOTYPE GLOBAL HIDDEN ABS __init_array_start 70: 080484d4 4 OBJECT GLOBAL DEFAULT 14 _IO_stdin_used 71: 080494f0 0 NOTYPE GLOBAL DEFAULT 16 __data_start 72: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses 73: 080494f0 0 NOTYPE GLOBAL HIDDEN ABS __preinit_array_start 74: 00000000 0 NOTYPE WEAK DEFAULT UND gmon_start 75: 080482bc 48 FUNC GLOBAL DEFAULT UND strcpy@@GLIBC_2.0

文件./aaa加載進(jìn)內(nèi)存后,再看看變量的地址以及所在的區(qū):[test@redhat]# gdb ./aaaGNU gdb 6.1.1(gdb) disassemble mainDump of assembler code for function main:0x0804838c <main+0>: push %ebp0x0804838d <main+1>: mov %esp,%ebp0x0804838f <main+3>: sub $0x18,%esp0x08048392 <main+6>: and $0xfffffff0,%esp0x08048395 <main+9>: mov $0x0,%eax0x0804839a <main+14>: sub %eax,%esp

char s333[] = "abc";0x0804839c <main+16>: mov 0x80484df,%eax # 0x80484df處為"abc"堰汉,位于.rodata0x080483a1 <main+21>: mov %eax,0xfffffff8(%ebp) # 0xfffffff8(%ebp) 為局部變量 char s333[]

char *p333 = "123456";0x080483a4 <main+24>: movl $0x80484e3,0xfffffff0(%ebp) # 0x80484e3處為"123456/0",位于.rodata; 0xfffffff0(%ebp) 為局部變量 char *p333

p111 = (char *)malloc(10);0x080483ab <main+31>: sub $0xc,%esp0x080483ae <main+34>: push $0xa # 0xa=10 ; push $0xa后伟墙,此時(shí)堆棧esp值又減去4字節(jié)翘鸭,相當(dāng)于sub $0x10,%esp0x080483b0 <main+36>: call 0x804829c <malloc>0x080483b5 <main+41>: add $0x10,%esp0x080483b8 <main+44>: mov %eax,0x8049500 # 0x8049500 為全局變量p111,位于.data

p222 = (char *)malloc(20);0x080483bd <main+49>: sub $0xc,%esp0x080483c0 <main+52>: push $0x14 # 0x14=20 ; push $0xa后戳葵,此時(shí)堆棧esp值又減去4字節(jié)就乓,相當(dāng)于sub $0x10,%esp0x080483c2 <main+54>: call 0x804829c <malloc>0x080483c7 <main+59>: add $0x10,%esp0x080483ca <main+62>: mov %eax,0xfffffff4(%ebp) # 0xfffffff4(%ebp) 為局部變量p222

strcpy(p111, "123456");0x080483cd <main+65>: sub $0x8,%esp0x080483d0 <main+68>: push $0x80484e3 # 0x80484e3處內(nèi)容為"123456/0",位于.rodata; 0x080483d5 <main+73>: pushl 0x8049500 # 0x8049500 為全局變量p111拱烁,位于.data0x080483db <main+79>: call 0x80482bc <strcpy>0x080483e0 <main+84>: add $0x10,%esp0x080483e3 <main+87>: leave 0x080483e4 <main+88>: ret 0x080483e5 <main+89>: nop 0x080483e6 <main+90>: nop 0x080483e7 <main+91>: nop 0x080483e8 <main+92>: nop 0x080483e9 <main+93>: nop 0x080483ea <main+94>: nop 0x080483eb <main+95>: nop 0x080483ec <main+96>: nop 0x080483ed <main+97>: nop 0x080483ee <main+98>: nop 0x080483ef <main+99>: nop End of assembler dump.(gdb) q[test@redhat]#

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末生蚁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子戏自,更是在濱河造成了極大的恐慌邦投,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擅笔,死亡現(xiàn)場(chǎng)離奇詭異志衣,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)猛们,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門念脯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人弯淘,你說(shuō)我怎么就攤上這事绿店。” “怎么了庐橙?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵假勿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我态鳖,道長(zhǎng)转培,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任郁惜,我火速辦了婚禮堡距,結(jié)果婚禮上甲锡,老公的妹妹穿的比我還像新娘。我一直安慰自己羽戒,他們只是感情好缤沦,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著易稠,像睡著了一般缸废。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驶社,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天企量,我揣著相機(jī)與錄音,去河邊找鬼亡电。 笑死届巩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的份乒。 我是一名探鬼主播恕汇,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼或辖!你這毒婦竟也來(lái)了瘾英?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤颂暇,失蹤者是張志新(化名)和其女友劉穎缺谴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耳鸯,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湿蛔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了片拍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煌集。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妓肢,死狀恐怖捌省,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碉钠,我是刑警寧澤纲缓,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站喊废,受9級(jí)特大地震影響祝高,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜污筷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一工闺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦陆蟆、人聲如沸雷厂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)改鲫。三九已至,卻和暖如春林束,著一層夾襖步出監(jiān)牢的瞬間像棘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工壶冒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缕题,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓胖腾,卻偏偏與公主長(zhǎng)得像避除,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胸嘁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容