女性为什么会肾结石| 牙齿发麻是什么原因| 贱是什么意思| 为什么会肾结石| 月经褐色是什么原因| 维生素D有什么食物| 乳腺导管扩张是什么意思| 梅毒长什么样| 同好是什么意思| 梦见掉牙齿是什么意思| 丙肝阳性是什么意思呢| 彩虹像什么挂在天空| 孔子的真名叫什么| miu什么牌子| 中指和无名指发麻是什么原因| 迦字五行属什么| 灰水是什么| 女兔配什么属相最好| 触不可及什么意思| 胃火重吃什么药| 睾丸炎有什么症状| 付之一炬什么意思| 梦见蛇咬我是什么意思| 梦见做鞋子是什么意思| 宫颈潴留囊肿是什么意思| 夏占生女是什么意思| 3月10日什么星座| 淡水鱼什么鱼最好吃| 军长是什么军衔| 护照补办需要什么材料| 给小孩办身份证需要什么| 天秤座和什么座最配对| 尿不尽是什么原因| 形态各异的异是什么意思| 吃什么可以抑制食欲| 外痔用什么药| gln是什么氨基酸| 岁月匆匆像一阵风是什么歌| 回归热是什么病| 圆滑是什么意思| 张的五行属性是什么| 洗牙喷砂是什么意思| 梦见家里水管漏水是什么意思| 淋巴发炎吃什么药好| 牙齿一碰就疼是什么原因| 咽喉疼吃什么药| al是什么意思| 内窥镜是做什么检查| 栎字五行属什么| 葡萄都有什么品种| 排卵期是什么| 什么鸟好养又与人亲近| 下眼睑红肿是什么原因| 阴灵是什么意思| 脾虚吃什么食物补最快| 99属什么| 熊猫属于什么科| 眉毛里面有痣代表什么| 胃疼吃什么好| 和衣是什么意思| 坐西向东是什么宅| 脾虚如何调理吃什么药| 屌丝男是什么意思| 经常喝苏打水有什么好处和坏处| 小白龙叫什么| 为什么喝酒后会头疼| psd是什么意思| 吃氨糖有什么副作用| 开心果是什么意思| 舌根发黄是什么原因造成的| 流鼻涕是什么原因| 锋芒毕露什么意思| 刽子手是什么意思| 农历10月14日是什么星座| 棱长是什么意思| 湿疹用什么药最有效| 男人更年期吃什么药| 金利来皮带属于什么档次| 龙的九个儿子都叫什么名字| 夜间睡觉出汗是什么原因| 寮房是什么意思| 卵子排出体外是什么样子| 627是什么星座| 嗳腐吞酸是什么意思| 自然数的定义是什么| 包皮什么意思| 今年闰六月有什么说法| 才情是什么意思| 树菠萝什么时候成熟| 性生活后尿路感染是什么原因| 拉肚子吃什么水果好| 什么深似海| 月经太多是什么原因| 脚趾麻是什么病的前兆| 雨打棺材是什么征兆| 2002年五行属什么命| 潮起潮落是什么意思| 生吃蛇胆有什么功效| 前列腺吃什么食物调理| 下火喝什么茶| 女生下面什么样| 经常喝藕粉有什么好处| 有事钟无艳无事夏迎春是什么意思| 六月五号是什么星座| 红得什么| 妹妹你坐船头是什么歌| 对峙什么意思| 后背痒是什么病的前兆| 御字五行属什么| 身上起痘痘是什么原因| 糖尿病患者适合吃什么水果| 夏天适合喝什么汤| 脾虚湿盛吃什么药| 刚满月的小狗吃什么| 人生什么最重要| 痔核是什么| 白带有血是什么原因| 腹部疼挂什么科| 为什么插几下就射了| 军区司令是什么级别| 肺燥吃什么中成药| 一杆进洞叫什么球| 脉搏强劲有力代表什么| 肝火旺喝什么茶| 灰溜溜是什么意思| 大姨妈来了不能吃什么东西| 梦见别人杀人是什么预兆| 屁臭是什么原因造成的| 牙龈肿痛发炎吃什么药| 切是什么偏旁| 什么人不能吃石斛| abo是什么意思| 手腕疼挂什么科| 遗精吃什么药最好| 苍龙七宿的秘密是什么| 什么是中国| 宫颈那囊是什么| 热射病什么症状| 海外是什么意思| 白带豆腐渣状用什么药| 幽门螺旋杆菌抗体阳性是什么意思| 心悸吃什么药效果好| 催产素是什么| 骗婚是什么意思| 碧池是什么意思| 什么是npc| 带状疱疹什么引起的| 无机盐包括什么| 毛发旺盛女生什么原因引起的| 康复科是主要治疗什么| 溜车是什么意思| 西安香烟有什么牌子| 眼花是什么原因引起的| 妹控是什么意思| 一个石一个夕念什么| 什么叫心脏早搏| 突然视力模糊是什么原因引起的| 亚型是什么意思| 二进宫是什么意思| dv是什么牌子| 胰腺是什么| 为什么子宫会下垂| 不出汗的人是什么原因| 黄体期出血是什么原因| 淋巴结清扫是什么意思| 肝脏挂什么科| 孩子上火吃什么药| 阑尾炎有什么症状| 关节错缝术是什么意思| 六是什么意思| 外科医生是做什么的| 亡羊补牢的亡是什么意思| 商鞅变法是什么时期| 芸豆长什么样子| 去鱼腥味最好的方法是什么| 有什么好吃的外卖| 木隶念什么| 什么是疣图片| 拉不出来屎是什么原因| 吃什么能提高血压| 胸有成竹是什么意思| 三板斧是什么意思| 辣椒代表什么生肖| 吃花生米是什么意思| 泌尿感染是什么原因引起的| 男人为什么喜欢吃奶| 鼻窦炎用什么药效果最好| 双侧苍白球钙化是什么意思| 属虎的五行属什么| 双胞胎是什么意思| 口羊读什么| 高嘌呤是什么意思| 夏天不出汗是什么原因| 生快是什么意思| 青鱼是什么鱼| 偏印代表什么| 什么是质子重离子治疗| 什么是清关| 红玛瑙适合什么人戴| 吃什么紧致皮肤抗衰老| 硬度不够是什么原因| 玉对人身体健康有什么好处| 黑脸娃娃有什么功效| 女性下面水少是什么原因| 毫无违和感什么意思| 色盲是什么遗传方式| 厚积薄发是什么意思啊| 少校什么级别| 睡眠不好什么原因| 天蝎座是什么象| 牛的本命佛是什么佛| vad是什么意思| 什么是前置胎盘| 是什么原因| 今年21岁属什么生肖| 公安局跟派出所有什么区别| taco是什么| trab抗体偏高代表什么| 什么是小数| 4月什么星座| 纯原是什么意思| 手不什么什么| 九条鱼代表什么意思| 五香粉是什么| 夜盲症缺什么维生素| 雷什么风什么成语| 阿拉蕾什么意思| 生理期肚子疼吃什么药| 老舍原名叫什么| 为什么会得湿疹| 压床是什么意思| 二氧化钛是什么| 肾阴阳两虚用什么药| 委屈是什么意思| 耳朵发热是什么原因| 紫菜和海带有什么区别| 场面是什么意思| 立事牙疼吃什么药| 女人梦见狗是什么预兆| 梅核气吃什么药| 办理健康证需要带什么| 吃饭快的人是什么性格| 读书心得是什么意思| 丹毒病是什么原因引起的| 什么时候洗头是最佳时间| 前年是什么年| 汕头市花是什么花| 截根疗法是什么| 04年属什么生肖| 中国属于什么亚| 心志是什么意思| 离殇是什么意思| 熊猫血是什么| 长期服用二甲双胍有什么副作用| 白芽奇兰是什么茶| 四离日是什么意思| 额头出油多是什么原因| 宝宝肤专家软膏主要治什么| 小腹疼痛挂什么科| siri是什么| 入幕之宾是什么意思| 男属鸡的和什么属相最配| 什么闻乐见| 什么药可以催月经来| 百度Jump to content

今年福建实施29个投资工程包 年度计划投资972亿

From Wikipedia, the free encyclopedia
Content deleted Content added
m formatting fix
Jorjulio (talk | contribs)
m In first sentence, changed "the software" to "that the software".
?
(6 intermediate revisions by 5 users not shown)
Line 2: Line 2:
{{redirect|Segfault|the website|Segfault (website)}}
{{redirect|Segfault|the website|Segfault (website)}}
{{More citations needed|date=November 2011}}
{{More citations needed|date=November 2011}}
In [[computing]], a '''segmentation fault''' (often shortened to '''segfault''') or '''access violation''' is a [[Fault (computing)|fault]], or failure condition, raised by hardware with [[memory protection]], notifying an [[operating system]] (OS) the software has attempted to access a restricted area of memory (a memory access violation). On standard [[x86]] computers, this is a form of [[general protection fault]]. The operating system [[kernel (operating system)|kernel]] will, in response, usually perform some corrective action, generally passing the fault on to the offending [[Process (computing)|process]] by sending the process a [[signal (computing)|signal]]. Processes can in some cases install a custom signal handler, allowing them to recover on their own,<ref name="Peter Van der Linden">''Expert C programming: deep C secrets'' By Peter Van der Linden, page 188</ref> but otherwise the OS default signal handler is used, generally causing [[abnormal termination]] of the process (a program [[Crash (computing)|crash]]), and sometimes a [[core dump]].
In [[computing]], a '''segmentation fault''' (often shortened to '''segfault''') or '''access violation''' is a [[Interrupt|failure condition]] raised by hardware with [[memory protection]], notifying an [[operating system]] (OS) that the software has attempted to access a restricted area of memory (a memory access violation). On standard [[x86]] computers, this is a form of [[general protection fault]]. The operating system [[kernel (operating system)|kernel]] will, in response, usually perform some corrective action, generally passing the fault on to the offending [[Process (computing)|process]] by sending the process a [[signal (IPC)|signal]]. Processes can in some cases install a custom signal handler, allowing them to recover on their own,<ref name="Peter Van der Linden">''Expert C programming: deep C secrets'' By Peter Van der Linden, page 188</ref> but otherwise the OS default signal handler is used, generally causing [[abnormal termination]] of the process (a program [[Crash (computing)|crash]]), and sometimes a [[core dump]].


Segmentation faults are a common class of error in programs written in languages like [[C (programming language)|C]] that provide low-level memory access and few to no safety checks. They arise primarily due to errors in use of [[Pointer (computer programming)|pointer]]s for [[virtual memory]] addressing, particularly illegal access. Another type of memory access error is a [[bus error]], which also has various causes, but is today much rarer; these occur primarily due to incorrect ''physical'' memory addressing, or due to misaligned memory access – these are memory references that the hardware ''cannot'' address, rather than references that a process is not ''allowed'' to address.
Segmentation faults are a common class of error in programs written in languages like [[C (programming language)|C]] that provide low-level memory access and few to no safety checks. They arise primarily due to errors in use of [[Pointer (computer programming)|pointer]]s for [[virtual memory]] addressing, particularly illegal access. Another type of memory access error is a [[bus error]], which also has various causes, but is today much rarer; these occur primarily due to incorrect ''physical'' memory addressing, or due to misaligned memory access – these are memory references that the hardware ''cannot'' address, rather than references that a process is not ''allowed'' to address.

Latest revision as of 18:38, 22 July 2025

百度 辽宁男篮感谢信全文如下:在辽篮历经苦战以3比1战胜北京队进入CBA半决赛之后,辽篮俱乐部正式宣布:辽篮半决赛的主场将回归大本营----辽宁体育馆。

In computing, a segmentation fault (often shortened to segfault) or access violation is a failure condition raised by hardware with memory protection, notifying an operating system (OS) that the software has attempted to access a restricted area of memory (a memory access violation). On standard x86 computers, this is a form of general protection fault. The operating system kernel will, in response, usually perform some corrective action, generally passing the fault on to the offending process by sending the process a signal. Processes can in some cases install a custom signal handler, allowing them to recover on their own,[1] but otherwise the OS default signal handler is used, generally causing abnormal termination of the process (a program crash), and sometimes a core dump.

Segmentation faults are a common class of error in programs written in languages like C that provide low-level memory access and few to no safety checks. They arise primarily due to errors in use of pointers for virtual memory addressing, particularly illegal access. Another type of memory access error is a bus error, which also has various causes, but is today much rarer; these occur primarily due to incorrect physical memory addressing, or due to misaligned memory access – these are memory references that the hardware cannot address, rather than references that a process is not allowed to address.

Many programming languages have mechanisms designed to avoid segmentation faults and improve memory safety. For example, Rust employs an ownership-based[2] model to ensure memory safety.[3] Other languages, such as Lisp and Java, employ garbage collection,[4] which avoids certain classes of memory errors that could lead to segmentation faults.[5]

Overview

[edit]
Example of human generated signal
Segmentation fault affecting Krita in KDE desktop environment
A null pointer dereference on Windows 8

A segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (for example, attempting to write to a read-only location, or to overwrite part of the operating system).

The term "segmentation" has various uses in computing; in the context of "segmentation fault", it refers to the address space of a program.[6] With memory protection, only the program's own address space is readable, and of this, only the stack and the read/write portion of the data segment of a program are writable, while read-only data allocated in the const segment and the code segment are not writable. Thus attempting to read outside of the program's address space, or writing to a read-only segment of the address space, results in a segmentation fault, hence the name.

On systems using hardware memory segmentation to provide virtual memory, a segmentation fault occurs when the hardware detects an attempt to refer to a non-existent segment, or to refer to a location outside the bounds of a segment, or to refer to a location in a fashion not allowed by the permissions granted for that segment. On systems using only paging, an invalid page fault generally leads to a segmentation fault, and segmentation faults and page faults are both faults raised by the virtual memory management system. Segmentation faults can also occur independently of page faults: illegal access to a valid page is a segmentation fault, but not an invalid page fault, and segmentation faults can occur in the middle of a page (hence no page fault), for example in a buffer overflow that stays within a page but illegally overwrites memory.

At the hardware level, the fault is initially raised by the memory management unit (MMU) on illegal access (if the referenced memory exists), as part of its memory protection feature, or an invalid page fault (if the referenced memory does not exist). If the problem is not an invalid logical address but instead an invalid physical address, a bus error is raised instead, though these are not always distinguished.

At the operating system level, this fault is caught and a signal is passed on to the offending process, activating the process's handler for that signal. Different operating systems have different signal names to indicate that a segmentation fault has occurred. On Unix-like operating systems, a signal called SIGSEGV (abbreviated from segmentation violation) is sent to the offending process. On Microsoft Windows, the offending process receives a STATUS_ACCESS_VIOLATION exception.

Causes

[edit]

The conditions under which segmentation violations occur and how they manifest themselves are specific to hardware and the operating system: different hardware raises different faults for given conditions, and different operating systems convert these to different signals that are passed on to processes. The proximate cause is a memory access violation, while the underlying cause is generally a software bug of some sort. Determining the root causedebugging the bug – can be simple in some cases, where the program will consistently cause a segmentation fault (e.g., dereferencing a null pointer), while in other cases the bug can be difficult to reproduce and depend on memory allocation on each run (e.g., dereferencing a dangling pointer).

The following are some typical causes of a segmentation fault:

  • Attempting to access a nonexistent memory address (outside process's address space)
  • Attempting to access memory the program does not have rights to (such as kernel structures in process context)
  • Attempting to write read-only memory (such as code segment)

These in turn are often caused by programming errors that result in invalid memory access:

  • Dereferencing a null pointer, which usually points to an address that's not part of the process's address space
  • Dereferencing or assigning to an uninitialized pointer (wild pointer, which points to a random memory address)
  • Dereferencing or assigning to a freed pointer (dangling pointer, which points to memory that has been freed/deallocated/deleted)
  • A buffer overflow
  • A stack overflow
  • Attempting to execute a program that does not compile correctly. (Some compilers[which?] will output an executable file despite the presence of compile-time errors.)

In C code, segmentation faults most often occur because of errors in pointer use, particularly in C dynamic memory allocation. Dereferencing a null pointer, which results in undefined behavior, will usually cause a segmentation fault. This is because a null pointer cannot be a valid memory address. On the other hand, wild pointers and dangling pointers point to memory that may or may not exist, and may or may not be readable or writable, and thus can result in transient bugs. For example:

char *p1 = NULL;           // Null pointer
char *p2;                  // Wild pointer: not initialized at all.
char *p3  = malloc(10 * sizeof(char));  // Initialized pointer to allocated memory
                                        // (assuming malloc did not fail)
free(p3);                  // p3 is now a dangling pointer, as memory has been freed

Dereferencing any of these variables could cause a segmentation fault: dereferencing the null pointer generally will cause a segfault, while reading from the wild pointer may instead result in random data but no segfault, and reading from the dangling pointer may result in valid data for a while, and then random data as it is overwritten.

Handling

[edit]

The default action for a segmentation fault or bus error is abnormal termination of the process that triggered it. A core file may be generated to aid debugging, and other platform-dependent actions may also be performed. For example, Linux systems using the grsecurity patch may log SIGSEGV signals in order to monitor for possible intrusion attempts using buffer overflows.

On some systems, like Linux and Windows, it is possible for the program itself to handle a segmentation fault.[7] Depending on the architecture and operating system, the running program can not only handle the event but may extract some information about its state like getting a stack trace, processor register values, the line of the source code when it was triggered, memory address that was invalidly accessed[8] and whether the action was a read or a write.[9]

Although a segmentation fault generally means that the program has a bug that needs fixing, it is also possible to intentionally cause such failure for the purposes of testing, debugging and also to emulate platforms where direct access to memory is needed. On the latter case, the system must be able to allow the program to run even after the fault occurs. In this case, when the system allows, it is possible to handle the event and increment the processor program counter to "jump" over the failing instruction to continue the execution.[10]

Examples

[edit]
Segmentation fault on an EMV keypad

Writing to read-only memory

[edit]

Writing to read-only memory raises a segmentation fault. At the level of code errors, this occurs when the program writes to part of its own code segment or the read-only portion of the data segment, as these are loaded by the OS into read-only memory.

Here is an example of ANSI C code that will generally cause a segmentation fault on platforms with memory protection. It attempts to modify a string literal, which is undefined behavior according to the ANSI C standard. Most compilers will not catch this at compile time, and instead compile this to executable code that will crash:

int main(void)
{
    char *s = "hello world";
    *s = 'H';
}

When the program containing this code is compiled, the string "hello world" is placed in the rodata section of the program executable file: the read-only section of the data segment. When loaded, the operating system places it with other strings and constant data in a read-only segment of memory. When executed, a variable, s, is set to point to the string's location, and an attempt is made to write an H character through the variable into the memory, causing a segmentation fault. Compiling such a program with a compiler that does not check for the assignment of read-only locations at compile time, and running it on a Unix-like operating system produces the following runtime error:

$ gcc segfault.c -g -o segfault
$ ./segfault
Segmentation fault

Backtrace of the core file from GDB:

Program received signal SIGSEGV, Segmentation fault.
0x1c0005c2 in main () at segfault.c:6
6               *s = 'H';

This code can be corrected by using an array instead of a character pointer, as this allocates memory on stack and initializes it to the value of the string literal:

char s[] = "hello world";
s[0] = 'H';  // equivalently, *s = 'H';

Even though string literals should not be modified (this has undefined behavior in the C standard), in C they are of static char [] type,[11][12][13] so there is no implicit conversion in the original code (which points a char * at that array), while in C++ they are of static const char [] type, and thus there is an implicit conversion, so compilers will generally catch this particular error.

Null pointer dereference

[edit]

In C and C-like languages, null pointers are used to mean "pointer to no object" and as an error indicator, and dereferencing a null pointer (a read or write through a null pointer) is a very common program error. The C standard does not say that the null pointer is the same as the pointer to memory address 0, though that may be the case in practice. Most operating systems map the null pointer's address such that accessing it causes a segmentation fault. This behavior is not guaranteed by the C standard. Dereferencing a null pointer is undefined behavior in C, and a conforming implementation is allowed to assume that any pointer that is dereferenced is not null.

int *ptr = NULL;
printf("%d", *ptr);

This sample code creates a null pointer, and then tries to access its value (read the value). Doing so causes a segmentation fault at runtime on many operating systems.

Dereferencing a null pointer and then assigning to it (writing a value to a non-existent target) also usually causes a segmentation fault:

int *ptr = NULL;
*ptr = 1;

The following code includes a null pointer dereference, but when compiled will often not result in a segmentation fault, as the value is unused and thus the dereference will often be optimized away by dead code elimination:

int *ptr = NULL;
*ptr;

Buffer overflow

[edit]

The following code accesses the character array s beyond its upper boundary. Depending on the compiler and the processor, this may result in a segmentation fault.

char s[] = "hello world";
char c = s[20];

Stack overflow

[edit]

Another example is recursion without a base case:

int main(void)
{
    return main();
}

which causes the stack to overflow which results in a segmentation fault.[14] Infinite recursion may not necessarily result in a stack overflow depending on the language, optimizations performed by the compiler and the exact structure of a code. In this case, the behavior of unreachable code (the return statement) is undefined, so the compiler can eliminate it and use a tail call optimization that might result in no stack usage. Other optimizations could include translating the recursion into iteration, which given the structure of the example function would result in the program running forever, while probably not overflowing its stack.

See also

[edit]

References

[edit]
  1. ^ Expert C programming: deep C secrets By Peter Van der Linden, page 188
  2. ^ "The Rust Programming Language - Ownership".
  3. ^ "Fearless Concurrency with Rust - The Rust Programming Language Blog".
  4. ^ McCarthy, John (April 1960). "Recursive functions of symbolic expressions and their computation by machine, Part I". Communications of the ACM. 4 (3): 184–195. doi:10.1145/367177.367199. S2CID 1489409. Retrieved 2025-08-07.
  5. ^ Dhurjati, Dinakar; Kowshik, Sumant; Adve, Vikram; Lattner, Chris (1 January 2003). "Memory safety without runtime checks or garbage collection" (PDF). Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems. Vol. 38. ACM. pp. 69–80. doi:10.1145/780732.780743. ISBN 1581136471. S2CID 1459540. Retrieved 2025-08-07.
  6. ^ "Debugging Segmentation Faults and Pointer Problems - Cprogramming.com". www.cprogramming.com. Retrieved 2025-08-07.
  7. ^ "Cleanly recovering from Segfaults under Windows and Linux (32-bit, x86)". Retrieved 2025-08-07.
  8. ^ "Implementation of the SIGSEGV/SIGABRT handler which prints the debug stack trace". GitHub. Retrieved 2025-08-07.
  9. ^ "How to identify read or write operations of page fault when using sigaction handler on SIGSEGV?(LINUX)". Retrieved 2025-08-07.
  10. ^ "LINUX – WRITING FAULT HANDLERS". 12 November 2017. Retrieved 2025-08-07.
  11. ^ "6.1.4 String literals". ISO/IEC 9899:1990 - Programming languages -- C.
  12. ^ "6.4.5 String literals". ISO/IEC 9899:1999 - Programming languages -- C.
  13. ^ "6.4.5 String literals". ISO/IEC 9899:2011 - Programming languages -- C.
  14. ^ "What is the difference between a segmentation fault and a stack overflow?". Stack Overflow. Retrieved 2025-08-07.
[edit]
落英缤纷是什么意思 完美收官什么意思 乳糖不耐受不能吃什么 胎儿腿短是什么原因 什么叫夏至
月经过多是什么原因 什么是羊蝎子 孕妇梦见坟墓是什么预兆 星辰大海什么意思 篦子是什么东西
龟头起红点用什么药 11.22什么星座 吃杨梅有什么好处 海马体是什么意思 情绪不稳定是什么原因
上单是什么意思 次日什么意思 中指尖麻木是什么原因 桃花什么颜色 黯淡是什么意思
祈是什么意思hcv9jop4ns2r.cn 爱在西元前什么意思hcv8jop3ns9r.cn 光气是什么气体hcv8jop7ns2r.cn 净身是什么意思hcv8jop2ns3r.cn 两岁宝宝不会说话但什么都知道hcv7jop6ns3r.cn
水土不服吃什么药hcv8jop7ns3r.cn 猫代表什么象征意义qingzhougame.com 吃饭的时候恶心想吐是什么原因hcv8jop3ns1r.cn 女人在什么时候最想男人hcv8jop7ns7r.cn 凝血高是什么原因hcv7jop7ns2r.cn
载脂蛋白a1偏高是什么原因hebeidezhi.com 为什么会长胎记hcv9jop5ns8r.cn 继承衣钵是什么意思hcv9jop7ns0r.cn 阿托品属于什么类药物hcv7jop5ns2r.cn 去台湾需要什么证件hcv9jop3ns0r.cn
心脾两虚吃什么食物补最快hcv8jop3ns0r.cn 中国的国树是什么hcv7jop5ns0r.cn 室上速是什么原因导致的hcv8jop2ns0r.cn 钙化灶是什么意思hcv8jop3ns5r.cn 白鸡蛋是什么鸡下的蛋hcv7jop4ns6r.cn
百度