【发布时间】:2016-12-08 23:25:55
【问题描述】:
我正在用 C 编写一个哈希游戏,我正在使用 malloc 为表分配内存。但是,当我编译程序时,我遇到了分段错误。使用调试器我发现了一个错误:显然,我不能使用 malloc,因为它找不到 malloc.c 或类似的东西。这是代码(发生段错误的地方):
int inicializaTabuleiro(char *ptrTabuleiro)
{
//Aloca memória para o tabuleiro
ptrTabuleiro = malloc(9);
//Verifica se a memória foi alocada
if(!ptrTabuleiro)
return 0;
int contadorPosicao;
//Preenche o tabuleiro com '-'
for(contadorPosicao = 0; contadorPosicao < 9; contadorPosicao++)
ptrTabuleiro[contadorPosicao] = '-';
return 1;
}
对可能导致它的原因有什么想法吗?附加信息:在 Linux Mint 上使用带有 GCC 编译器的代码块。感谢您的宝贵时间!
【问题讨论】:
-
相信我,你不需要看 malloc.c;错误不存在。它是在你的代码中,当你写出数组的边界时。
-
您可能正试图进入
malloc源代码,而调试器不知道它在哪里。请放心,您的段错误不是由 malloc.c 中的有问题的代码引起的 .. 是您的代码导致了段错误。只需使用“next”或“n”(不是“step”或“s”)跳过对gdb中的 malloc 的调用。如果它在malloc行崩溃,您可能在到达那里之前有一些未定义的行为。 -
只要让gdb运行代码,它会在segfault所在的地方中断