gpt4 book ai didi

c - 尝试在 C 中的 vector 中分配内存时出现奇怪的错误

转载 作者:行者123 更新时间:2023-11-30 20:52:46 27 4
gpt4 key购买 nike

嗯,我正在用 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;
}

谁能解释一下这是怎么回事?

最佳答案

您永远不会为 bin 分配多个整数空间,但您却尝试在那里存储多个整数。

关于c - 尝试在 C 中的 vector 中分配内存时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57633673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com