c++ - 0xC0000005 : Access violation writing location

标签 c++

我有这个函数可以从文件中读取文本:

uintmax_t ResourcePack::getText(const string& file, char** data)
{
    *data = new char[static_cast<size_t>(size) + 1];
    fseek(_fileDescriptor, static_cast<long>(begin), SEEK_SET);
    fread(*data, static_cast<size_t>(size), 1, _fileDescriptor);
    *data[size] = '\0';
}

FILE* _fileDescriptor, uintmax_t sizeuintmax_t begin 在其他代码中获取,这里不重要,但取值正确。

fseekfread 行工作正常。 实际上,我在*data中有文件内容,但是当执行最后一行时,我遇到了访问冲突。

为什么我可以使用 fread 写入 *data,但不能使用 *data[size] = '\0'

最佳答案

您在运算符优先级方面遇到问题 - 您需要 (*data)[size],而不是 *data[size]

关于c++ - 0xC0000005 : Access violation writing location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922995/

相关文章:

c++ - 如何读/写二进制文件中的结构?

c++ - 为什么 visual studio 2017 坚持认为我在其他地方没有打开的文件在编辑器之外被修改了?

c++ - 停止共享库链接以删除未使用的类

c++ - 通用句柄类

c++ - 迭代方向枚举

c++ - 抛出异常类型没有限制

c++ - 在 C++ 中更改 Windows 7 墙纸

c++ - 具有高频信号 <-> 槽连接的 Qt EventLoop 延迟

c++ - 与时间一起工作

c++ - mmap 比 getline 慢?