分配给自定义结构的成员(ANSI C)

时间:2014-06-03 12:42:12

标签: c

我有这个自定义结构:

typedef struct
{
  MyType* myType;
  int one;
  char szTwo[128];
} _TheType

_TheType theType;

有没有办法将内存分配给

theType.myType 

以某种方式将_MyType的定义定义为指针?

2 个答案:

答案 0 :(得分:1)

是的,当然。只需使用malloc()

theType.myType = malloc(sizeof *theType.myType);

这为一个实例提供了空间(如果成功)。只需缩放sizeof表达式,就可以将它扩展为数组,如果你想要的话。

myType指针是结构成员的事实并不重要,这与您为任何其他动态内存分配执行的操作相同。

当你完成它时,请记住free()指针,并且在完成之后永远不要访问它。

答案 1 :(得分:1)

假设您熟悉标准库中的mallocfree函数,请执行以下操作:

theType.myType = malloc(sizeof(MyType));


// once you're done with theType
free(theType.myType);

编辑:

如果这是C ++,那么不是C:

typedef struct
{
  MyType* myType;
  int one;
  char szTwo[128];

  _TheType() : myType(new MyType) {}
  ~TheType() { delete myType; }
} _TheType;

将在创建_TheType时分配并在其销毁时取消分配