我有这个函数可以从文件中读取文本:
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 size
和 uintmax_t begin
在其他代码中获取,这里不重要,但取值正确。
fseek
和 fread
行工作正常。
实际上,我在*data中有文件内容,但是当执行最后一行时,我遇到了访问冲突。
为什么我可以使用 fread
写入 *data
,但不能使用 *data[size] = '\0'
?
最佳答案
您在运算符优先级方面遇到问题 - 您需要 (*data)[size]
,而不是 *data[size]
。
关于c++ - 0xC0000005 : Access violation writing location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922995/