我試圖運行下面的代碼,但它在訪問結構數組值時給了我垃圾數據。爲什麼會發生這種情況,我該如何解決這個問題?一旦我將malloc部件移到主函數中,它似乎就可以工作。但是我想把malloc保存在一個單獨的函數中。在訪問結構數組時打印的垃圾數據
#include <cstdlib>
#include <limits>
#include <iostream>
using namespace std;
/*
*
*/
typedef struct{
float x;
float y;
} CoordinateData;
void tester(CoordinateData* cd_data){
cd_data = (CoordinateData*)malloc(5*sizeof(CoordinateData));
CoordinateData data = {41.2525,74.0744};
*cd_data = data;
}
int main(int argc, char** argv) {
CoordinateData* cd_data;
tester(cd_data);
std::cout << (*cd_data).x << "::" << (*cd_data).y << std::endl;
}
輸出我得到的是2.42126e-39 :: - 1.51015e-05 的預期結果是41.2525 :: 74.0744
出於好奇,爲什麼要爲5個CoordinateData分配內存? – juanchopanza
只是隨機的。沒有理由 – user949110