2020-06-18 17:18:53
调试环境:windows10 + Visual Studi 2013 C语言
在Release模式下调试Debug模式下无误的一个程序时,反复遇到堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出问题,在网上查一下资料表示都是数组越界的问题,叫本人详细查询数组大小的操作,经过反复的查找并未发现直接的数组越界问题,但是将问题定位在了一个输入为数组的函数之内,该函数return执行后即提示缓冲区溢出如下:
随后又查了一下__fastfail(FAST_FAIL_STACK_COOKIE_CHECK_FAILURE)的相关问题,将所有的相关数组都检查了赋初值操作后也无果;灵机一动想到,是不是因为对输入的数组直接进行了操作导致无法释放输入数组,函数内重建一个新的数组赋值输入数组的内容再操作新的数组果然不再报错了。