c - 尝试在 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;
}
有人可以解释一下发生了什么吗?
解决方案
您永远不会为 的 分配多个整数的空间bin
,但您尝试在其中存储多个整数。
推荐阅读
- winforms - 如何从 UserControl 更改控件属性
- java - 如何强制 Java 应用程序应该使用哪个类文件?
- vue.js - Vue根据对象值分配样式
- python - 使用 Python 3.8 生成“减 x 天”的语法?
- php - 解密由 MCRYPT_RIJNDAEL_128 加密的字符串
- python-3.x - 在基于组的 pandas DataFrame 中将单元格向左移动
- javascript - 如何使用 JAVASCRIPT 删除文本行
- python - python“zip”和for循环创建一个对象
- python - 有没有办法用python控制连接到主板中12v rgb接头的rgb条?
- scilab - 在scilab中求解常微分方程的问题