我在传递 to 的值时会遇到问题off_t
(malloc()
期望在哪里size_t
)?
我正在读取一个文件并将其内容存储到内存中。文件大小由st_size
成员从struct stat
传递给stat()
函数后获取,然后传递到malloc()
我将调用的地方,以fread()
传递返回的内存malloc()
asbuf
和文件大小 as nmemb
。
但问题是:如果文件大小真的是一个大数字,32 位/64 位机器上size_t
的函数行为是什么:整数溢出和损坏的 buf(不是请求的字节数是malloc()
真的回来了)还是NULL
?
我知道它可能真的永远不会发生,所以可能有人使用这个应用程序进入例如超级计算机并向我的解析器请求一个最大的文件......但我真的很想了解事情的最大可能,甚至永远不会发生的行为.