返回与本地变量关联的堆栈内存的地址(C ++)

时间:2012-09-24 21:08:32

标签: c++

Mac OSX,我正在尝试使用tchar.h,但显然是Windows特有的。而且我猜这是因为这段代码不适合我:

//toString

char *Node::toString(){

    char hilera[100];
    strcpy(hilera, dato->toString());
    strcat(hilera, "\n");
    return hilera;


}

那么,你有什么建议?

2 个答案:

答案 0 :(得分:6)

退出函数作用域hilera后将被销毁,将返回悬空指针。使用std::string,或在堆中分配内存。

答案 1 :(得分:4)

代码不起作用的原因是它返回局部变量的地址,这是未定义的行为。您需要动态分配缓冲区并返回其地址。或者因为这是C ++而是返回std::string