在C标准库是出了名的差,当涉及到I / O的安全性。许多功能有缓冲区溢出(getsscanf),或者如果不给予适当的参数(scanf),依此类推可以揍内存。每过一段时间和我遇到谁写自己的库,没有这些瑕疵进取黑客。

什么是最好的,你所看到的这些库的?你用他们的生产代码,如果是这样,这不是爱好项目举起更多?

有帮助吗?

解决方案

我使用 GLib的库,它有许多很好的标准和非标准的功能。

请参阅 https://developer.gnome.org/glib/stable/

也许你爱上...:)

例如:

的https://显影剂.gnome.org /油嘴/稳定/油嘴字符串-实用程序 - Functions.html#G-的strdup-printf的

解释的 g_strdup_printf 是:

  

类似于标准C的sprintf()函数,但更安全,因为它计算所需的最大空间,并分配内存以保存结果。

其他提示

这是不是真的回答你的问题有关的最安全的即可使用,但易受大部分功能缓冲你提到有更安全的版本,它需要的缓冲区长度作为参数,以防止溢出被打开了当使用标准方法进行的安全漏洞。

除非你已经放松警告的级别,你通常会在使用过时方法,建议你使用更安全的方法,而不是让编译器警告。

相信 Apache可移植运行时(APR)库比标准C库更安全。我用它,那么,作为Apache模块的一部分,同时也为独立的进程。

正如我说的是,D.J.的例子伯恩斯坦,更好地为DJB,djbdnsqmail的作者,创造 djblib ,它提供了一种快速,紧,安全的替代许多C标准库函数。

有关视窗有一个 '安全' C / C ++库

也许首先要问的是,如果你真的需要普通的C? (也许像.NET或Java语言是一个选项 - 例如然后缓冲区溢出是不是真的不再有问题)

另一种选择是,也许有其他高级语言是不是一种选择用C来写你的项目++的部分。然后,您可以有一个C接口封装了C ++代码,如果你真的需要℃。

因为如果你添加的所有先进功能的C ++标准库已建立的 - 你的C代码,就只能是稍快大部分的时间(以及含有大量的更多的错误比现有的和测试框架)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top