有人知道为什么以下代码行会抛出***堆栈粉碎检测到***错误
吗?#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char x[16];
strcpy(x,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
但是下面的代码没有抛出它?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char x[16];
x[17] = 'a';
}
谢谢!!
覆盖x[17]
不会覆盖 gcc 在返回地址之前放置的金丝雀值。