指针变量不能赋值,可以给普通变量赋值
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)有关
我遇到了一个有线问题,这是一个大的商业项目,所以我不能把原始代码放在这里。但逻辑是这样的:
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)有关