getline () vs. fgets (): 控制内存分配

要从文件中读取行 getline() , 有 fgets() 和 posix 函数 (忽略可怕 gets() 的)。它 getline() 是常识, 是首选, fgets() 因为它根据需要分配行缓冲区。 我的问题是: 这不是很危险吗?如果意外或恶意的人创建一个100GB 文件, 其中没有 '\n' 字节-这不会让我的 getline() 电话分配一个疯狂的内存量? ……

共6个回答, 标签: c posix
为什么是统计:: st _ size 0 为设备, 但同时 lseek 正确地定义了设备大小?

我注意到, 当我使用 + 查询设备的大小 open 时 lseek , 一切都没问题, 但当 stat 我使用设备时, 我得到的是零, 而不是真正的设备大小。该设备是干净的, 没有任何文件系统和设备的第一个字节开始与一些文本, 如 "1234567890ABC"。怎么了? 验证码: #include #include bool GetFileSize(const char* pPath, uint64_t& Size) { pPath = "/home/sw/.bashrc"; pPath = "/dev/sda"; struct stat buffer; if (stat(pPath, &buffer)) { printf("Failed to stat file. Error: %s. FilePath: %s\n", strerror(errno), pPath); return false; } printf("File size by stat: %" PRIu64 " WTF?\n", buffer. ……

共5个回答,已解决, 标签: c linux posix stat