我可以获得指向指向nullptr的指针的指针,它是否有效

Lef*_*ler 0 c++ dereference

我对以下代码有些怀疑:

void b(int** a){
        int *c = new int;
        *a = c;
        **a = 120;
}

int main(){
        int *a = nullptr;
        b(&a);
        if(a)
                delete a;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我担心的是,可能会导致UB,因为它是一个nullptr,我正在更改指针地址,因为我正在获取它的引用,但后来我开始认为这不应该是我将要遇到的问题.一些地址 - > nullptr.这个地址有效,所以我可以改变它.

我不止一次地运行了这个测试并启用了-fsanitize =地址,它运行正常.但是,这是正确的吗?

eer*_*ika 5

我担心的是可能导致UB,因为它是一个nullptr

a是的说法b()是没有nullptr,它会取消引用之前分配尖指针,所以这不是一个问题.