我想分配一个数组大小64字节,然后遍历数组索引从输入文件中读取每个字节。但是当我没有malloc()
数组索引时,循环停留在index0中(所以每次它循环时,它都会用下一个字节替换index0中的内容,而不是将每个字节放在下一个数组索引中,并将它们全部按时间顺序排列) 。无限循环fread
当我使用malloc()
它正确使用数组索引,但它是一个无限循环,并使用RAM的演出。
这里是我的代码:
struct BitIO {
FILE *FilePointer;
uint8_t *Buffer[64];
uint64_t BitsAvailable;
uint64_t BitsUnavailable;
} BitIO;
void Init_BitIO(const char *FileName, const char *Mode) {
BitIO.FilePointer = fopen(FileName, Mode);
malloc(sizeof(BitIO));
while (!feof(BitIO.FilePointer)) {
size_t BytesRead = 0;
for (int i = 0; i < 64; i++) {
BitIO.Buffer[i] = (uint8_t*)malloc(1);
BytesRead = fread(BitIO.Buffer[i], 1, 1, BitIO.FilePointer);
}
}
}
'的malloc(的sizeof(BitIO));'...这是一个创造性的方式来泄漏内存! – Sebivor
每次检查内存分配或打开文件成功! – alifirat