首页 > 解决方案 > 尝试在 C 中的向量中分配内存时出现奇怪的错误

问题描述

好吧,我正在用 C 语言做一个“二进制转换器”,然后制作一个二进制计算器作为大学挑战的一部分。我以与手动相同的方式计算出算法,但奇怪的是,它最多只能转换为 127,当我尝试转换 128 时,我得到了这个日志:

0 [main] teste 698 cygwin_exception::open_stackdumpfile: Dumping stack trace to teste.exe.stackdump

编码:

decToBin 函数 -

#define BASE 2
int* decToBin(int decimal){
    int rest = 0, ind = 0;
    int *bin = (int *) calloc(1, sizeof(int));

    while(decimal >= BASE){
        rest = decimal % BASE;
        bin[ind] = rest;
        bin = (int *) realloc(bin, sizeof(int));
        ind++;
        decimal /= BASE;
    }

    bin = (int *) realloc(bin, 2*sizeof(int));
    bin[ind] = decimal;
    bin[++ind] = -1;

    return bin;
}

主功能 -

int main(){
    int* binary = decToBin(128);
    for(int i = 0; binary[i] != -1; i++){
        printf("%d ", binary[i]);
    }
    return 0;
}

有人可以解释一下发生了什么吗?

标签: cgccmallocrealloccalloc

解决方案


您永远不会为 的 分配多个整数的空间bin,但您尝试在其中存储多个整数。


推荐阅读