我正确使用这些指针吗?我正在分配一些东西,但之后它立即为空

发布于 2024-10-30 20:46:34 字数 314 浏览 0 评论 0原文

if ((*l).proc == NULL)
    {
        (*l).proc = current_process;
        if(current_process == NULL)
        {
            __no_operation();
        }
        if((*l).proc == NULL)
        {
            __no_operation();
        }
    }

运行此代码时,我在两个无操作处添加了断点。然而,它只在两次中的第二次中断。这怎么可能?

if ((*l).proc == NULL)
    {
        (*l).proc = current_process;
        if(current_process == NULL)
        {
            __no_operation();
        }
        if((*l).proc == NULL)
        {
            __no_operation();
        }
    }

When running this code, I added breakpoints at both no-ops. However, it only breaks at the second of the two. How is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风尘浪孓 2024-11-06 20:46:34

任何理智的编译器都会将这两个相同的块优化为单个块。它可能还会将两个条件优化为一个。如果您想看到两者单独运行,请将 puts("A"); 添加到第一个,并将 puts("B"); 添加到第二个。

Any sane compiler will have optimized these two identical blocks into a single block. It will probably also optimize the two conditionals into one. If you want to see both running separately, add puts("A"); to the first and puts("B"); to the second.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文