创建缓冲区以加载数据时出错
error creating buffer to load data
>我在从文件加载数据时遇到问题。这段代码用一些随机数据填充高分(仅用于调试)
int i = 0;
for (i = 0; i < MAX_HIGH_SCORE; i++)
{
high_score_name[i] = al_ustr_new("123456789012345678901");
high_score[i] = 1000*i;
}
之后,我将所有这些保存到文件中。
ALLEGRO_FILE* high_score_file = al_fopen("hs.txt","wb");
for (i = 0; i < MAX_HIGH_SCORE; i++)
{
int buffer = al_ustr_size(high_score_name[i]);
al_fwrite32le(high_score_file, buffer);
al_fwrite(high_score_file, al_cstr(high_score_name[i]), buffer);
al_fwrite(high_score_file, &high_score[i], sizeof(high_score[i]));
}
al_fclose(high_score_file);
它工作得很好。它有四个字节保留为大小,然后是 21 个字符high_score_name[]
后跟 high_score[]
int,它也需要 4 个字节。
当我尝试加载它时,问题开始了。我尝试以多种方式做,但它无法编译,因为行
char* buffer= al_malloc(size);
给出错误:
类型为"void *"的值不能用于初始化类型为"char *"的实体
for (i = 0; i < MAX_HIGH_SCORE; i++)
{
int size = al_fread32le(high_score_file);
char* buffer = al_malloc(size);
al_fread(high_score_file, buffer, size);
high_score_name[i] = al_ustr_new_from_buffer(buffer, size);
int *buffer2 = &high_score[i];
al_fread(high_score_file, buffer2, sizeof(high_score[i]));
al_free(buffer);
}
al_fclose(high_score_file);
我坚持了两天,我真的很感激任何帮助。
malloc 的输出具有 void* 类型,您应该尝试将其显式转换为 char* 。
char* buffer = static_cast<char *>(al_malloc(size))
如果你的函数在内部使用 malloc 来分配内存,那么 malloc 返回一个 void*,如果你的al_malloc返回 void*...使用类型强制转换将其转换为字符*。
字符* 缓冲区 = (字符*)al_malloc(大小);
这应该有效。
malloc的功能原型:
void *malloc(size_t size);
相关文章:
- 将数据从 std::Vector 存储到 Eigen::Vector 时出错
- 为什么双精度数据类型在C++中出错?
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 将运算符<<与隐式转换的非基本数据类型一起使用时出错
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 如何对 int 变量应用验证,使其仅接受整数数据,并且在任何其他数据的情况下不会出错?
- 为什么当我们把变量"u"的数据类型从长整型更改为整型时,模幂会出错?
- 尝试将数据添加到结构内部的矢量时出错
- 使用提升库在队列和堆栈数据结构上保存和加载数据时出错
- 尝试从 csv 文件输入大量数据时出错
- 为什么我在尝试从istringstream读取数据时出错
- 保存/加载C++数据时出错
- 使用矢量<数据类型>进行 arm 编译时出错
- C++中矢量中的数据存储出错
- C++中的模板仅在长数据类型上出错
- 为什么我在尝试将opencv图像数据指针转换为char*时出错
- C++executeQuery()在显示表中的MySQL数据时出错
- 使用 Boost::asio::async_send_to 发送加密数据时出错
- C++在尝试编写对象读取器时,在尝试从一个向量获取数据时出错
- 创建缓冲区以加载数据时出错