我有c
需要用户输入的可利用代码。我能够打印出堆栈中的内容,使用%10$p
该内容可以打印出存储在堆栈中的第十个值。但是,当我尝试运行同一个程序但带有%10$n
segfaults时。这没有道理。Segfaults意味着我正在尝试访问不属于我的内存。但是,此内存确实属于我,因为我可以打印出来。为什么会这样?
不幸的是,我无法对此进行邮编,因为它是用于分配作业的。因此,我必须使这个问题保持抽象。
%10$n
表示将打印的字符数写入堆栈中第10个元素所指向的地址,而不是堆栈中实际的第10个元素。这意味着,如果第十个元素没有指向有效的可写内存,而它可能没有指向有效的可写内存,那么在尝试向其写入数据时会出现段错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句