人再笨还能写不出内存安全的 C?

2 天前
 nlzy

人再笨还能学不会空指针不能解引用?

人再笨还能学不会超出存储期的对象的指针不能解引用?

人再笨还能学不会 alloc 出来的指针需要 free 一次?

人再笨还能学不会 alloc 出来的指针不能越界读取和写入?

人再笨还能学不会 malloc 出来的内存需要初始化才能读取?

人再笨还能学不会 free 只能用在 alloc 出来的指针上?

人再笨还能学不会 free'ed / realloc'ed 的指针不能再次 free ?

人再笨还能学不会重用 free'ed / realloc'ed 的存储是未定义行为?

人再笨还能学不会 realloc 返回 NULL 时原有指针仍需 free 一次?

人再笨还能学不会 memcpy memmove 的目标缓冲区的大小需要足够大?

人再笨还能学不会 memcpy 的两段内存区域不能重叠?

人再笨还能学不会 strcpy strlen puts printf("%s"...) 只能用在带 '\0' 终结符的字符串上?

...

3319 次点击
所在节点    C
20 条回复
Gilfoyle26
2 天前
Rust:电脑不可信,人不可信,我只相信编译器。
moefishtang
2 天前
钱老别说了/(ㄒoㄒ)/~~
破防了
Nugine0
2 天前
当你对你的内存安全知识很自信时,想想心脏滴血和永恒之蓝,你觉得你比 OpenSSL 的人厉害还是比 Windows 的人厉害?(狗头
bunny189
2 天前
你再骂?!
coderluan
2 天前
楼主这头像非常适合这个话题,让我想起百度 C 语言吧了
WorseIsBetter
2 天前
更多时候不是笨的问题,而是疏忽导致的犯错。
尤其是当程序架构设计得比较糟糕,屎山代码一堆起来,这种疏忽就更容易发生。

所以我现在写的新应用默认当我开始处理不信任的用户输入时,攻击者立即取得 ACE 。
但由于有 seccomp+landlock / capsicum 沙箱兜底,即便如此攻击者也无法造成实质性的损害(如果沙箱自身没有漏洞的话)

To Err Is Human; To Sandbox, Divine.
ejin
2 天前
最近琢磨了一下,还是想学点单片机,但是 C++语言基本上是必选的,实在不想碰,唉。
ejin
2 天前
你说的这些都不难,

但是心智负担重啊。
kristofer
2 天前
楼主道心破碎了? hhh
strobber16
2 天前
我还是去学微积分吧
levelworm
2 天前
有可能的话用 arena 也许能好一点
dmanbu
2 天前
钱学森说「人就算再笨还能学不会微积分吗」
FreeWong
2 天前
zig 是好的选项吗
vultr
2 天前
其实不是笨的问题,是根本不学的问题。
body007
2 天前
@dmanbu 不就是微信积分嘛,多用微信支付就有积分
minami
2 天前
虽然编程原神马上就要打过来了,但我还是要说,如果管理不好内存的话,老老实实用 gc 语言
profchaos
2 天前
古法编程遗老严重阻碍了计算机的发展,rust 是对的
wangtian2020
2 天前
感觉不如 Zig
proxychains
2 天前
别骂了别骂了
red13
1 天前
OP 重仓军工股了?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1157154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX