gpt4 book ai didi

c - 无法将 NULL 分配给指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:32 25 4
gpt4 key购买 nike

我有一个奇怪的问题,我无法用对指针的 N​​ULL 赋值来解释。这是我的测试结构:

typedef struct
{
uint8_t *buffer_pntr;
uint8_t size;
uint8_t some_other_stuff;
}my_struct_t;

void my_function (my_struct_t *handler)
{
memset(&handler,0,sizeof(handler);
handler->buffer_pntr=NULL;
}

void main(void)
{
my_struct_t test;
my_function(&test);
}

我想调用 my_function 将我的结构设置为已知状态,因为我在 main 中声明我的结构,因此它变为局部变量状态未知。问题是分配 NULL 会导致系统崩溃(cortex-m4 上的硬故障),我也不确定在带有指针的结构上使用 memset 是否是一个好习惯。从 my_function 中删除 NULL 赋值并在 my_function 外部使用 test.buffer_pntr=NULL 可以解决问题。

最佳答案

问题出在这里:

memset(&handler,0,sizeof(handler));

我假设您想要将结构归零,但是 handler 是一个指针,所以当您说 &handler 时,您正在获取指向该指针的指针并将其归零。你做的如此有效

handler = NULL;

然后取消引用指针导致了问题。如果你想将你需要做的结构归零

memset(handler,0,sizeof(*handler));

那么,当然不用单独将里面的指针置为NULL了。

关于c - 无法将 NULL 分配给指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56312201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com