小编Sur*_*uru的帖子

c中for循环中的缓冲区数组溢出

什么时候程序会在缓冲区溢出的情况下崩溃

#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]上发生赋值时这不会崩溃?

c c++

6
推荐指数
1
解决办法
933
查看次数

标签 统计

c ×1

c++ ×1