C语言中为了避免缓冲区溢出应尽量使用哪些函数

如题所述

C中的绶冲区溢出是因为地址引用出界,如果出了这个程序的界就会产生异常。
没有像C++中那样的new delete等操作符的C更加灵活但也没有那样检查,所有的检查都是程序员自己完成的。
所以,没有这类的函数,比如像malloc calloc等都只是分配内存,而分配了多少内存只有程序员知道,越界了也没办法。编译程序的时候就应该注意这样的问题。
如何注意这些问题
(1):数组定义时就定义好长度。使用时,不要超过。
(2):分配或申请内存时,也定义好长度,使用时,不能超过。
(3):对于不确定的数据缓冲,定义一个量超过时丢弃一部分不需要或可丢弃的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-22
缓冲区溢出是因为 使用了全局变量或者分配内存 然后这些东西占用了电脑内存,一旦使用的内存太于在电脑可运行的分配内存就会产生溢出。
所以你要解决这个问题写代码要注意2点
1、少使用Const变量,在函数里使用变量(函数使用完变量会自动释放)
2、分配内存后,就比如你new了一个对象,如果不使用这个对象的话就要Delete
(不同分配内存的东西,释放方法不一样,具体根据你分配内存的方法,百度一下就能找 到释放方法)
第2个回答  2016-06-16
缓存区溢出最典型的例子就是gets函数了吧?然而C11标准已经不让用了,可以用fgets来代替gets的功能,比如对于同一个字符串str[50]:
gets的用法是gets(str); 没有限制最大读取量,函数也不会读取字符串末尾的换行符。
fgets的用法是fgets(str,50,stdin); 函数会读取字符串末尾的换行。本回答被提问者采纳
相似回答