相关疑难解决方法(0)

什么是未定义的引用/未解析的外部符号错误,我该如何解决?

什么是未定义的参考/未解决的外部符号错误?什么是常见原因以及如何修复/预防它们?

随意编辑/添加您自己的.

c++ c++-faq linker-errors unresolved-external undefined-reference

1418
推荐指数
32
解决办法
52万
查看次数

什么是分段错误?

什么是分段错误?C和C++有什么不同吗?分段错误和悬空指针是如何相关的?

c c++ segmentation-fault

530
推荐指数
9
解决办法
55万
查看次数

508
推荐指数
8
解决办法
5万
查看次数

如何在Linux上生成分段错误的核心转储?

我在Linux中有一个进程出现分段错误的进程.如何在失败时告诉它生成核心转储?

unix linux bash coredump tcsh

208
推荐指数
12
解决办法
34万
查看次数

如何用gdb分析程序的核心转储文件?

我的程序运行如下:

exe -p param1 -i param2 -o param3
Run Code Online (Sandbox Code Playgroud)

它崩溃并生成了一个核心转储文件 core.pid

我想通过分析核心转储文件

gdb ./exe -p param1 -i param2 -o param3 core.pid
Run Code Online (Sandbox Code Playgroud)

但是gdb认识到core.pidgdb输入的参数.

在这种情况下如何分析核心转储文件?

linux debugging gdb coredump

140
推荐指数
6
解决办法
42万
查看次数

在C中生成Segfault的最简单的标准符合方式是什么?

我认为问题就是这么说的.涵盖从C89到C11的大多数标准的示例将是有帮助的.我虽然这个,但我猜它只是未定义的行为:

#include <stdio.h>

int main( int argc, char* argv[] )
{
  const char *s = NULL;
  printf( "%c\n", s[0] );
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

正如一些投票要求澄清:我希望有一个程序通常有编程错误(我能想到的最简单的是段错误),这是保证(按标准)中止.这与最小的段错误问题有点不同,它不关心这种保险.

c iso segmentation-fault

58
推荐指数
6
解决办法
2万
查看次数

什么是悬垂指针?

我知道这是很常见的问题,但对我来说还是新的!

我不明白悬挂指针的概念,谷歌搜索,并编写测试方法找到一个.

我只是想知道这是一个悬垂的指针吗?无论我发现什么样的东西都回来了,我在这里尝试类似的东西!

谢谢!

void foo(const std::string name)
{
    // will it be Dangling pointer?!, with comments/Answer
    // it could be if in new_foo, I store name into Global.
    // Why?! And what is safe then?
    new_foo(name.c_str());
}

void new_foo(const char* name)
{
    // print name or do something with name...   
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers dangling-pointer

43
推荐指数
5
解决办法
5万
查看次数

将数据复制/扫描/读取到未初始化指针时发生崩溃或"分段错误"

这个问题可以作为所有常见问题的参考:

当我将数据复制/扫描到未初始化指针所指向的地址时,为什么会出现神秘崩溃或"分段错误"?

例如:

char* ptr;
strcpy(ptr, "hello world"); // crash here!
Run Code Online (Sandbox Code Playgroud)

要么

char* ptr;
scanf("%s", ptr); // crash here!
Run Code Online (Sandbox Code Playgroud)

c pointers segmentation-fault

42
推荐指数
1
解决办法
7046
查看次数

未定义的未定义行为如何?

我不确定我是否完全理解未定义行为可能危及程序的程度.

假设我有这段代码:

#include <stdio.h>

int main()
{
    int v = 0;
    scanf("%d", &v);
    if (v != 0)
    {
        int *p;
        *p = v;  // Oops
    }
    return v;
}
Run Code Online (Sandbox Code Playgroud)

这个程序的行为是否针对v非零的情况而定义,或者即使v为零也未定义?

c undefined-behavior language-lawyer

34
推荐指数
3
解决办法
1759
查看次数

为什么这个字符串反转C代码会导致分段错误?

我正在尝试编写代码来反转字符串(我只是想在C编程和指针操作方面做得更好),但我无法弄清楚为什么我会遇到分段错误:

#include <string.h>

void reverse(char *s);

int main() {
    char* s = "teststring";
    reverse(s);

    return 0;
}

void reverse(char *s) {
    int i, j;
    char temp;

    for (i=0,j = (strlen(s)-1); i < j; i++, j--) {
        temp = *(s+i);     //line 1
        *(s+i) = *(s+j);   //line 2
        *(s+j) = temp;     //line 3
    }
}
Run Code Online (Sandbox Code Playgroud)

它是第2行和第3行导致分段错误.我知道可能有更好的方法来做到这一点,但我有兴趣找出我的代码中特别导致分段错误的内容.

更新:我已根据要求包含了调用函数.

c string segmentation-fault

29
推荐指数
2
解决办法
6610
查看次数