我有一個關於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) –