指针立即变为NULL

Pointer becomes NULL immediately

本文关键字:NULL 指针      更新时间:2023-10-16

我有以下LLVM代码。奇怪的是,类型为StoreInstsi变量在if块外被分配了新指令后立即变为null(0),而我在外部范围内声明了它。这是怎么回事?

        Value *OldVal = NULL;
        StoreInst* si = NULL;
        if ( ... )
        {
            if ( ... )
            {
                ....
                if ( ... )
                {
                    ...
                    StoreInst* si = new StoreInst(...);
                    errs() << "si = " << si << "n"; // Get some address here
                }
                errs() << "-->SI = " << si << "n"; // Here I get NULL, why?
            }
            ...
        }

我得到这样的输出,

si = 0x1822ba0
-->SI = 0x0

StoreInst* si = new StoreInst(...);-您在此处隐藏了以前的名称si

当作用域结束}时,您会看到另一个指针的值

下面是你所做的一个例子:

int val = 0; //first val
{
    int val = 10; //other val (let's call it second)
    cout << val; //second val
} // second val is destroyed here
cout << val; //first val

为了简单起见,我在示例中使用了int。实际上,它可以是任何类型的