【发布时间】:2010-10-15 10:51:35
【问题描述】:
我要为程序创建一个函数,这是程序的一部分,是一个位图,用于控制哪些内存地址可以免费使用(这与此函数无关) .位图是 bit[64],它拥有 8 x 64 位,下面的函数采用参数编号,即函数应占用的数据块数。在数组 data_blocks[] 中应该是位值为 0(空闲)的数据块的编号。
这个程序的执行给出了一些奇怪的输出,而 data_blocks[] 给出的值超过了 512 的长度。有人可以帮帮我吗?谢谢
#include <stdio.h>
#include <string.h>
void occupyDataBlocks(int number)
{
int ab = number;
char bit[512/8];
int bitNum = 0;
int count;
int data_blocks[ab];
int b;
for(bitNum = 0; bitNum < (sizeof(bit)/sizeof(char)); bitNum++) {
char x = bit[bitNum];
for(count = 0; x != 0; x >>= 1 ) {
if(!(x & 0)) {
data_blocks[count] = count;
}
if(count == number) {
break;
}
count++;
}
if(count == number) {
break;
}
}
if(count == number) {
int a;
for(a = 0; a < 5; a++) {
printf("%d\n", data_blocks[a]);
}
} else {
printf("Not enough data blocks\n");
}
}
int main(void)
{
occupyDataBlocks(3);
return 1;
}
【问题讨论】: