【发布时间】:2016-08-10 10:28:23
【问题描述】:
我有一个特殊的问题,我的程序在 strcmp 处崩溃。
在 gdb 核心分析中,我发现被检查的两个字符串都是正常的,这意味着它们的指针不是 NULL 并且它们包含有限的空终止值。
但是其中一个字符串是垃圾(不是变量要包含的那个)
抛开它是垃圾的事实不谈,我真的很想知道为什么 strcmp 会因为 2 个健全的字符串而崩溃?这可能是什么原因?
提前致谢!
编辑:
一个例子,
a = strcmp(b,c);
(gdb) p b
$92 = 0x7f58d3a36b89 "H\205\300uRH\215}\320\350\a\300\361\377A\276"
(gdb) p c
$93 = 0x2041e48 "MAIN"
【问题讨论】:
-
请提供您出错的示例或证明您观点的示例测试用例
-
很高兴从核心转储中看到相关信息。
-
欢迎来到 StackOverflow。请提供a Minimal, Complete, and Verifiable example
-
指针指向你的程序不允许访问的内存。取消引用指针意味着:访问该内存。
-
发布代码。调试输出可能会产生误导:
b和c的实际值可能无法提供给调试器。