ddip1000按引用返回问题

原文

alias VErr = char*;

@safe:

ref char* front_p(return scope char** p) { return *p; }

__gshared char* g;

void main()
{
    char* _errors;
    g = front_p(&_errors);
 //错误:赋值较长生命期的`"g"`变量,为`"_errors"`的变量的地址.
}

错误不正确.在赋值给'g'之前,返回值间接的,所以'_errors'的地址未赋值给'g',而是把'_errors'指向的地址赋值给了'g'.
可注释掉"@safe:",编译它并查看汇编程序而知道.

posted @ 2023-02-09 14:11  zjh6  阅读(17)  评论(0)    收藏  举报  来源