0xC0000005:访问冲突写入位置

dan*_*aze 0 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';
}
Run Code Online (Sandbox Code Playgroud)

FILE* _fileDescriptor, uintmax_t sizeuintmax_t begin获得其他代码,这里不重要,但具有正确的值.

fseekfread线条工作正常.实际上,我有*数据中的文件内容,但是当执行最后一行时,我得到了访问冲突.

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

Pau*_*l R 5

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