2012-09-24 59 views
-2

Mac OSX,我试图使用tchar.h,但显然这是Windows特定的。我猜这是这个代码不适合我的原因:与本地变量关联的栈内存地址返回(C++)

//toString 

char *Node::toString(){ 

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


} 

那么,你有什么建议?

+1

你的代码不起作用? –

+0

您似乎没有尝试使用'tchar.h' –

回答

6

退出功能范围hilera将被销毁后,将返回悬挂指针。使用std::string,或者在堆中分配内存。

+0

对于'std :: string' +1 - 如果你的代码是C++(尽管有C++的互操作性......),那么没有理由绕过C字符串。 –

4

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

+0

它必须是C++,因为C没有成员函数和名称空间。 –

+0

@MooingDuck,do'h!正在专注于该功能的实施。 – hmjd