永发信息网

怎么在stack overflow提问时插入大段代码

答案:2  悬赏:20  手机版
解决时间 2021-11-11 07:33
  • 提问者网友:心如荒岛囚我终老
  • 2021-11-10 12:31
怎么在stack overflow提问时插入大段代码
最佳答案
  • 五星知识达人网友:迟山
  • 2021-11-10 13:49
你把编辑器里的代码先复制到StackOverFlow的文本框里,然后全选复制过去的代码,点上方 {}这个按钮,网站会自动帮你转换格式的。这就和你在知乎编辑器上方点 <> 这个按钮的效果一样。
全部回答
  • 1楼网友:三千妖杀
  • 2021-11-10 15:02
stackoverflow(堆栈溢出)就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了老的堆栈数据。或者解释为在长字符串中嵌入一段代码,并将过程的返回地址覆盖为这段代码的地址,这样当过程返回时,程序就转而开始执行这段自编的代码了。比如如下这段程序:#includeintmain(){charname[8];printf("Pleasetypeyourname:");gets(name);printf("Hello.%s!",name);return0;}编译并且执行,输入ipxodiAAAAAAAAAAAAAAAA,执行完gets(name)之后,堆栈如下:内存底部内存顶部nameEBPret<-------[ipxodiAA][AAAA][AAAA]^&name堆栈顶部堆栈顶部由于我们输入的name字符串太长,name数组容纳不下,只好向内存顶部继续写'A'。由于堆栈的生长方向与内存的生长方向相反,这些'A’覆盖了堆栈的老的元素。'EBPret’都被'A'覆盖了。在main返回的时候,就会把'AAAA'的ASCII码:0x41414141作为返回地址,CPU会试图执行0x41414141处的指令,结果出现错误。这就是一次堆栈溢出!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯