gpt4 book ai didi

c - &variable 作为表达式在 c 中意味着什么

转载 作者:太空狗 更新时间:2023-10-29 17:11:06 27 4
gpt4 key购买 nike

这是一段程序代码:

 char authenticated = 0;
char guard1 = 234;
char guard2 = 234;
//more variables initliased...
char buf[128];

&authenticated;
&guard1;
&guard2;

那么,当引用作为程序代码中的单个表达式存在时,这意味着什么?

编辑:更多上下文:它是在 debian 服务器上用 gcc 编译的,它与安全项目有关,您可以在其中溢出 buf 数组。

最佳答案

鉴于这是一个安全项目,我猜测这些语句旨在防止编译器优化掉 authenticatedguard1 guard2 变量。如果稍后在函数中不使用这些变量,兼容的 C 编译器可以将它们优化掉,从而更改函数调用的堆栈帧布局。

从技术上讲,由于这些语句没有副作用,编译器原则上也可以优化它们。但是,我的感觉是预期的编译器不会这样做(不是说它不能 这样做,只是它不能 这样做)。这样,堆栈帧的布局将使 authenticated 变量被两个不是 null 终止符的 char 值屏蔽,这可能会使覆盖 变得有点棘手已验证。当然,听起来您的任务是专门更改authenticated,因此并非万无一失。 :-)

希望这对您有所帮助!

关于c - &variable 作为表达式在 c 中意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26766220/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com