gpt4 book ai didi

c - 为枚举分配内存

转载 作者:行者123 更新时间:2023-11-30 15:52:11 25 4
gpt4 key购买 nike

我有一个结构和一个枚举,

    struct __value
{
int a;
enum xsd__boolean *ptr;
}
enum xsd__boolean
{
__true = 1,
__false = 0
};

这是对枚举进行 malloc 并赋值的正确方法吗?我想将 __true 或 __false 的值赋给 *__StructPtr->ptr。__true 的大小是否相同和 int 一样?

struct __value *__StructPtr;
__StructPtr->ptr = (int *)malloc(sizeof(int));
*__StructPtr->ptr = __true;

这是正确的方法吗,请通过一些示例向我提供一些对此的见解。

最佳答案

struct __value *__StructPtr;
__StructPtr->ptr = (int *)malloc(sizeof(int));
*__StructPtr->ptr = __true;

这是不正确的。您的 __StructPtr 指针未指向已分配的内存,因此通过指针进行分配会导致内存损坏。

正确的方法是这样的:

struct __value __StructPtr;
__StructPtr.ptr = malloc(sizeof(*__StructPtr.ptr));
*__StructPtr.ptr = __true;

在本例中,您将在堆栈上分配一个 struct __value,然后动态创建 __StructPtr->ptr 指向的内存。

如果您想动态分配 __StructPtr 和内存 __StructPtr->ptr 指向两者,请尝试:

struct __value *__StructPtr;
__StructPtr = malloc(sizeof(*__StructPtr));
__StructPtr->ptr = malloc(sizeof(*__StructPtr->ptr));
*__StructPtr->ptr = __true;

关于c - 为枚举分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14660667/

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