主页
看看
说说
主页
说说
看看
登入
注册
首页
提问
分享
建议
讨论
公告
动态
其它
发表新帖
怎样在 C++里用 C-style 按行读取文件并不分配 heap 内存?
讨论
未结
15
37
dangyuluo
会员
2022年9月14日 05:12
发表
打开或者下载
APP,畅享极致体验
<p>同事的破要求,按行读取一个文件,不让用 ifstream ,仅仅是因为“We don't have a precise understanding of how much memory the program will allocate”。想用<code>getline</code>但是<code>getline</code>也会分配内存。请问有没有什么现成的轮子?谢谢。</p>
收藏(
0
)
分享
相关标签:
灌水交流
注意:本文归作者所有,未经作者允许,不得转载
15个回复
clrss
会员
2022年9月14日 05:43
C++不也能 scanf?
0
0
评论
Jirajine
会员
2022年9月14日 06:44
那就用 read 手写?自己在栈上静态分配 buf ,读到 buf 里自己按换行符拆分。
0
0
评论
yolee599
会员
2022年9月14日 06:44
fgets 不行吗?
0
0
评论
hankai17
会员
2022年9月14日 08:12
fread ?
0
0
评论
nightwitch
会员
2022年9月14日 10:45
按行读取 不用堆 来个 100M 的单行文件必定栈溢出
0
0
评论
GeruzoniAnsasu
会员
2022年9月14日 10:45
看描述怎么感觉 ABproblem 你 precisely alloc 一块 heap 来做 buffer 不行么
0
0
评论
iyeatse
会员
2022年9月14日 10:45
你可以跑个 benchmark ,给他一个 precise understanding
0
0
评论
haolongsun
会员
2022年9月14日 11:44
不知道 size 有多大?还敢在栈上存?
0
0
评论
cnbatch
会员
2022年9月14日 13:13
可以反问你的同事一句:那你能精确知道文件的每一行有多长吗?你能保证文件每一行不会超出预分配的固定大小? 重点在于“你能保证吗?” 言外之意就是:“出了事你负责”。
0
0
评论
cnbatch
会员
2022年9月14日 13:13
如果你的同事被要求“出了事你负责”还不怂的话,那就正好,把相关保证言论保存下来(最好能放到 Git 记录里面),一旦栈溢出就甩锅给他
0
0
评论
chenzhongxiang
会员
2022年9月14日 13:13
我的实践是可以用 mmap ,逐个字符扫描检查换行,不过不允许分配堆内存你拿到了一段比较长的行(例如 1MB ,这个问题的关键就是你压根就不知道一行会有多长)你后续的使用也会有诸多棘手的地方。 更好的实践是不用过多纠结分配堆内存,C 程序员通常应该清楚自己在做什么,合理的分配堆没有任何问题。有一段时间我也尽量避免使用堆内存,错误的以为这样可以提升性能。后来逐渐的意识到没啥必要,你看看 glibc 的源码很多你认为很简单的函数都使用堆内存。你们的项目质量要求比 glibc 还高么。 个人的常规见解。实际项目可能在某个点就是要求苛刻,那就需要妥善的考虑全局。
0
0
评论
sockpuppet9527
会员
2022年9月14日 13:42
建议离职,能提出这种不合理的需求的公司可太行了,另外即使是 heap 分内存,也通过类似代理的方式统计。
0
0
评论
mingl0280
会员
2022年9月14日 13:42
这个需求太傻 x 了,这么搞肯定栈溢出(正常的栈空间才 8M ),太蠢了…… 除非你按定长字节读取(当然这个效率也不行)
0
0
评论
zengmingyang96
会员
2022年9月14日 14:13
编译器指定的,想多大就多大
0
0
评论
villivateur
会员
2022年9月14日 14:13
不用 heap 的话,要不在 ZI 区域先定义 1 个 G 的全局变量吧(狗头)
0
0
评论
回复
所在专栏
提问
分享
建议
讨论
动态
其它
阅读权限
默认,所有用户可见
LV1及以上用户可见
LV2及以上用户可见
LV3及以上用户可见
LV4及以上用户可见
LV5及以上用户可见
LV6及以上用户可见
会员专享
管理员可见
确认修改
相关帖子
香港行的一些见闻,去过没去过的都来了解下
6
Rime 输入法真是简洁啊。
4
win11 间歇性卡顿, 每十几秒卡顿半秒, 声音鬼畜, 画面不动
0
5 家公司工作了 18 年,分享些工作经验,也写给自己
0
如何看待满嘴脏话的人?
1
有偿求租 chatgpt 账号,自用应付工作不分享
0
孩子小学一年级学习跟不上,每天晚上作业写到快 12 点,今天老师给我打电话建议明年重读一年级
0
2023 年了, GoWeb 应该选择 Goframe、Gin、Beego、Iris 哪一项?
20
看隔壁邻居噪音有感,自己也遇到了楼上噪音问题,那么带降噪耳机可以解决吗?
8
使用 usb 上行线接入显示器后插入 U 盘,文件管理器没有反应
0
友情链接
聚合社区