c - 函数内的动态结构数组分配

标签 c multithreading dynamic

我正在尝试在函数内分配结构数组。

我的结构如下:

 typedef struct{
      uint16_t  taskNumber;
      uint16_t  taskType;          
      double    lat;               
      double    lon;               
      double    speed;             
      uint8_t   successCriteria;   
      uint16_t  successValue;      
      uint8_t   nextPoint;      
 }missionPoint;

在我的代码中,我声明了一个missionPoint指针,然后将其传递给函数,该函数将在解析文件并计算出它需要有多大之后动态分配它。 目前,我的代码如下所示:

 missionPoint* mission;    //declaring the pointer
 parseMission(mission);

parseMission 函数将解析一个特定的文件并找出我需要多少个 MissionPoints,然后按以下方式分配它:

 mission = (missionPoint*) malloc(n * sizeof(missionPoint));

其中 n 是我需要的已解析任务点数。

问题是在函数内部我可以看到正确的值,但在函数外部看不到;一旦函数返回,就好像什么都没发生一样。

非常感谢您的帮助,以便该函数修改原始指针,并且我可以从函数外部看到数据。

最佳答案

您需要传递对指针的引用,即双指针,因为地址本身将被修改:

missionPoint *mission;
parseMission(&mission);

parseMission 的参数现在应该是 missionPoint ** 类型,而不是 missionPoint *:

*mission = (missionPoint*) malloc(n * sizeof(missionPoint));

如果您只想修改 mission 指向的内存,则没有必要这样做,但这是不可避免的,因为您正在为指针本身分配一个新值。

另请注意,在 C 中不需要强制转换 malloc 的返回值。

关于c - 函数内的动态结构数组分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349602/

相关文章:

java - Android Intent打开新 Activity 但没有关闭旧 Activity

Java多线程使用同步不是线程安全的

用 C 创建动态矩阵

c - GDB中的格式化打印

c - 前缀树实现

c++ - MPI_Send 到在同一进程上运行的多个 POSIX 线程

c# - .Net 按键获取任意深度的对象属性值

c - 当尝试从 bmp 文件中提取 RGB 分量时,为什么我的代码段出现错误?

c - 为什么这段代码 "print "没有任何内容? (C)

c++ - 指向 C++ 中动态分配的二维数组中一行的指针