C 尝试使用%n写入缓冲区会导致segfault,但使用%p读取不会';T
我有可利用的C 尝试使用%n写入缓冲区会导致segfault,但使用%p读取不会';T,c,segmentation-fault,C,Segmentation Fault,我有可利用的c代码,它接受用户输入。我可以使用%10$p打印堆栈的内容,它打印出存储在堆栈上的第10个值。但是,当我尝试运行相同的程序,但使用%10$n时,它会出错。这没有道理。SEGFULTS表示我试图访问不属于我的内存。然而,这段记忆确实“属于我”,因为我可以把它打印出来。为什么会发生这种情况 不幸的是,我不能为它的邮政编码,因为它是一个任务。因此,我必须让这个问题保持抽象。%10$n意味着将打印到地址的字符数写入堆栈上的第10个元素,而不是堆栈中的实际第10个元素。这意味着,如果第10个元
c
代码,它接受用户输入。我可以使用%10$p
打印堆栈的内容,它打印出存储在堆栈上的第10个值。但是,当我尝试运行相同的程序,但使用%10$n
时,它会出错。这没有道理。SEGFULTS表示我试图访问不属于我的内存。然而,这段记忆确实“属于我”,因为我可以把它打印出来。为什么会发生这种情况
不幸的是,我不能为它的邮政编码,因为它是一个任务。因此,我必须让这个问题保持抽象。
%10$n
意味着将打印到地址的字符数写入堆栈上的第10个元素,而不是堆栈中的实际第10个元素。这意味着,如果第10个元素没有指向有效的、可写的内存,而它很可能没有指向,那么您将在尝试写入时进行segfault