Я портирую свой код C с 32 на 64 бита в visual studio и у меня возникают проблемы с вызовом fread
, который вызывает исключение Access violation writing location 0xFFFFFFFF873B2830
. Адрес, на который он пишет, совпадает с адресом указателя, возвращаемым malloc
.
. Я не могу понять, что может быть причиной этого. Какие-либо предложения?
velo_error_t velo_read_binary_file(char input_file[], uint8_t **p_buffer, uint32_t *p_length) {
// Returns error code, zero if normal:
velo_error_t err_code = VELO_ERROR_NONE;
// read input file.
FILE *f = fopen(input_file, "rb");
if (!f) {
printf("File not valid. File trying to open for reading:\n%s\n", input_file);
err_code = VELO_ERROR_INVALID_FILE;
} else {
fseek(f, 0, SEEK_END);
*p_length = ftell(f);
fseek(f, 0, SEEK_SET);
*p_buffer = malloc(*p_length);
if (*p_buffer) {
fread(*p_buffer, 1, *p_length, f);
}
fclose(f);
}
return err_code;
}