SensorCalData_t SensorParaDefaut_TGS = DEFAULT_CAL_VALUE(); /*使用默认参数
SensorCalData_t SensorParaDefaut_NAP = DEFAULT_CAL_VALUE();
SensorAlramLevValue_t SensorParaDefaut_Alarm = DEFAULT_ALARM_VALUE();
K_SensorPara_t SensorParaDefaut_Class = NEW_SENSOR_PARA();
K_SensorEn_t SensorEnParaLoad = NEW_SENSOR_EN();
/*基类变量的地址申请*/
p->SensorPara_ptr = (K_SensorPara_t *)malloc(sizeof(K_SensorPara_t));
if(p->SensorPara_ptr == NULL)
return 1;
p->SensorEn_ptr = (K_SensorEn_t *)malloc(sizeof(K_SensorEn_t));
if(p->SensorEn_ptr == NULL)
return 1;
/*数据参数部分*/
p->SensorPara_ptr->s_SensorAlamrData_ptr = (SensorAlramLevValue_t *)malloc(sizeof(SensorAlramLevValue_t));
if(p->SensorPara_ptr->s_SensorAlamrData_ptr == NULL)
return 1;
p->SensorPara_ptr->s_TGS_CalData_ptr = (SensorCalData_t *)malloc(sizeof(SensorCalData_t));
if(p->SensorPara_ptr->s_TGS_CalData_ptr == NULL)
return 1;
p->SensorPara_ptr->s_NAP_CalData_ptr = (SensorCalData_t *)malloc(sizeof(SensorCalData_t));
if(p->SensorPara_ptr->s_NAP_CalData_ptr == NULL)
return 1;
*(p->SensorPara_ptr) = SensorParaDefaut_Class; //注意, 这里由于重新赋值。导致前面申请的内存地址,都需要重新链接进来
*(p->SensorPara_ptr->s_SensorAlamrData_ptr) = SensorParaDefaut_Alarm;
*(p->SensorPara_ptr->s_TGS_CalData_ptr) = SensorParaDefaut_TGS;
*(p->SensorPara_ptr->s_NAP_CalData_ptr) = SensorParaDefaut_NAP;
*(p->SensorEn_ptr) = SensorEnParaLoad;
由于后面SensorPara_ptr通过一个中间变量进行了赋值, 导致原先该结构体指针内的成员指针都变了。 即使这个中间变量同之前的一样, 也不行。 (只要进行了赋值操作, 一切重头来)

对SensorPara_ptr通过一个中间变量进行了赋值后:

1105

被折叠的 条评论
为什么被折叠?



