C语言中为了避免缓冲区溢出应尽量使用哪些函数
3个回答
展开全部
C中的绶冲区溢出是因首族为地址引用出界,如果出了这个程序的界就会产生异常。
没有像C++中那样的new delete等操作符的C更加灵活但也没有那样检查,所有的检查都是程序员自己完成穗困的。
所猜芹念以,没有这类的函数,比如像malloc calloc等都只是分配内存,而分配了多少内存只有程序员知道,越界了也没办法。编译程序的时候就应该注意这样的问题。
如何注意这些问题
(1):数组定义时就定义好长度。使用时,不要超过。
(2):分配或申请内存时,也定义好长度,使用时,不能超过。
(3):对于不确定的数据缓冲,定义一个量超过时丢弃一部分不需要或可丢弃的。
没有像C++中那样的new delete等操作符的C更加灵活但也没有那样检查,所有的检查都是程序员自己完成穗困的。
所猜芹念以,没有这类的函数,比如像malloc calloc等都只是分配内存,而分配了多少内存只有程序员知道,越界了也没办法。编译程序的时候就应该注意这样的问题。
如何注意这些问题
(1):数组定义时就定义好长度。使用时,不要超过。
(2):分配或申请内存时,也定义好长度,使用时,不能超过。
(3):对于不确定的数据缓冲,定义一个量超过时丢弃一部分不需要或可丢弃的。
展开全部
缓冲区溢出是因为 使用了全局知蔽变量或者分配内存 然后这些东西占用了电脑内存,一旦使用的内存太于在电脑可运行的分配内存就会产生溢出。
所以你要解决这个问题写代码要注意2点
1、少使用Const变量,在函数里使用变量(函数使用完变量会自动释放)
2、分配内存后,就比如你new了源纤一个对象,如果不使用这个对象的话就要Delete
(不同分配内存的东西,释放方法不一样,雹猛仿具体根据你分配内存的方法,百度一下就能找 到释放方法)
所以你要解决这个问题写代码要注意2点
1、少使用Const变量,在函数里使用变量(函数使用完变量会自动释放)
2、分配内存后,就比如你new了源纤一个对象,如果不使用这个对象的话就要Delete
(不同分配内存的东西,释放方法不一样,雹猛仿具体根据你分配内存的方法,百度一下就能找 到释放方法)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
缓存区溢出最典型的例子就是gets函数了吧?然而C11标准已经不让猛皮用了,可以用fgets来代替gets的功能,比如对于同一个字符串str[50]:
gets的用法是gets(str); 没有限制最大读取量,函数也不枝枝差会读取字符串末尾的换行符。
fgets的用法是fgets(str,50,搭扮stdin); 函数会读取字符串末尾的换行。
gets的用法是gets(str); 没有限制最大读取量,函数也不枝枝差会读取字符串末尾的换行符。
fgets的用法是fgets(str,50,搭扮stdin); 函数会读取字符串末尾的换行。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询