我有一个关于char ptr输出的问题。以下是我试图执行该示例代码..字符指针导致输出错误
struct DeviceInfo{
char * name;
int id;
};
void testFunc(DeviceInfo *info){
char temp[50] = "test input";
info->name = temp;
}
void main(){
DeviceInfo deviceInfo;
testFunc(&deviceInfo);
std::cout<<"Output is "<<deviceInfo.name;
}
输出I在主要得到的是一些很怪之一.... 在调试时我发现,当“test.name”是传递给输出流它不仅 给出垃圾输出,但它也将“deviceInfo”对象的“名称”值更改为该垃圾值... 这是一种测试场景,但在实际应用中,必须执行此testFunc以同样的方式,即恒定的char字符串应该被赋予char ptr的名字。我尝试把'\ 0'在char temp的末尾像这样temp [strlen(temp)] ='\ 0';
,但它仍然不工作
任何帮助表示赞赏...
拉扎
也许temp [50]超出范围,然后'name'指向释放的内存。试着把testout中的'cout'放在里面,看看会发生什么。 –
如果我删除了“temp”变量,它将起作用。我认为当函数返回时,你的临时“temp”数组会被取消分配。 – 2012-01-23 15:23:30
[可以访问局部变量的内存吗?](http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope) –