C 分配问题:将十进制数转换为位的函数

问题描述

我正在尝试编写一个将一些十进制数转换为位的代码。 有更简单的方法可以达到这个结果,但我是在 C 语言中用内存开玩笑和开玩笑。

int ** decimalToBits(int *number,int size){
    int **bits = (int **)malloc(sizeof(*bits)*size),i = 0;
    for (int j = 0; j < size; j++) {
        int * temp = (int *)malloc(sizeof(int));
        while (number[j] >= 1) {
            temp[i++] = number[j] % 2;
            number[j] /= 2;
            realloc(temp,sizeof(int)); 
        }
        printf("\n");
        bits[j] = (int *) malloc(sizeof(int)*i);
        for (int k = i-1; k >= 0; k--){
            bits[j][k] = temp[k];
            printf("%d",bits[j][k]);
        }
        i = 0;
    }
    return bits;
}

我遇到了一些分配问题,首先我要解释一下这个想法:

我向函数传递多个数字,例如:

int numbers[2] = {23,73};
decimalToBits(numbers,2);

每个转换后的数都会存储在**bits双指针中,所以bits[0]包含转换后的23个数,bits[1]也包含73个转换后的数。

当我拨打 bits[j] = (int *) malloc(sizeof(int)*i); 时出现问题, 因为这似乎让临时指针被一些随机数覆盖。事实上,如果我删除 bits[j] = (int *) malloc(sizeof(int)*i);bits[j][k] = temp[k]; 行并将 printf("%d",bits[j][k]); 替换为 printf("%d",temp[k]); 代码似乎有一个很好的行为,它给了我正确的输出

10111
1001001

我还注意到从 bits[j] = (int *) malloc(sizeof(int)*8); 循环外部分配 for (int j = 0; j < size; j++) 可以让代码工作。那么为什么在像上面的代码一样声明时会出现这种分配问题,最好的解决方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)