次のコードを実行しようとしていますが、構造体配列の値にアクセスするとガベージ データが返されます。なぜこれが起こっているのですか?どうすれば修正できますか? 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 です