指针变量不能赋值,可以给普通变量赋值

Pointer variable can't be given value, instead, normal variable can be

我遇到了一个有线问题,这是一个大的商业项目,所以我不能把原始代码放在这里。但逻辑是这样的:

struct sample_t
{
  int inta;
  int * p_intb;
};
sample_t sample ={0};
sample.inta = 0; 
sample.p_intb = NULL; // crashed, why?

运行因为指针操作导致崩溃,但是inta没有问题。 然而, 如果我使用 memset(&sample.p_intb, 0, 4) 替换上面的相等,它就起作用了。

这是什么原因?如何解决这个问题?

This is a screenshot of the code

这个问题是由指针起始地址引起的(必须是4的倍数) 具体原因不清楚,应该和芯片(ecu)有关