什么时候程序会在缓冲区溢出的情况下崩溃
#include<stdio.h>
#include<stdlib.h>
main() {
char buff[50];
int i=0;
for( i=0; i <100; i++ )
{
buff[i] = i;
printf("buff[%d]=%d\n",i,buff[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
分配的前50个字节会发生什么,程序什么时候会崩溃?
我在UBUNTU中看到了gcc a.out,当我99时它崩溃了
>>
buff[99]=99
*** stack smashing detected ***: ./a.out terminated
Aborted (core dumped)
<<
Run Code Online (Sandbox Code Playgroud)
我想知道为什么在for循环中在buff [51]上发生赋值时这不会崩溃?