是不是可以使C应用程序“崩溃证明”?

假设我们在C中有一个SDK,它接受一些二进制数据(如图片)并做一些事情.是不是可以使这个SDK“防崩溃”?由于用户传递的无效输入(如异常短的垃圾数据),我主要意味着操作系统在内存访问冲突时强行终止.

我没有使用C的经验,但是当我用Google搜索时,我发现了几种听起来像解决方案的方法(使用向量而不是数组,配置编译器以便执行自动边界检查等).

当我向开发人员提出这个问题时,他说仍然不可能.不是我不相信他,但如果是这样,那么像Java这样的语言处理这个问题呢?我以为JVM每次都会执行边界检查.如果是这样,为什么不能手动在C中做同样的事情?

UPDATE
通过“防止崩溃”我并不是说应用程序不会终止.我的意思是它不应该突然终止没有发生的事情的信息(我的意思是它会转储核心等,但是不可能显示像“参数x无效”等消息吗?)

解决方法

您可以在C中检查数组的边界,std :: vector at()会自动执行此操作

这不会使你的应用程序崩溃证明,你仍然被允许故意射击自己的脚,但c没有强迫你扣动扳机

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...