我有这个自定义结构:
typedef struct
{
MyType* myType;
int one;
char szTwo[128];
} _TheType
_TheType theType;
有没有办法将内存分配给
theType.myType
以某种方式将_MyType的定义定义为指针?
答案 0 :(得分:1)
是的,当然。只需使用malloc()
:
theType.myType = malloc(sizeof *theType.myType);
这为一个实例提供了空间(如果成功)。只需缩放sizeof
表达式,就可以将它扩展为数组,如果你想要的话。
myType
指针是结构成员的事实并不重要,这与您为任何其他动态内存分配执行的操作相同。
当你完成它时,请记住free()
指针,并且在完成之后永远不要访问它。
答案 1 :(得分:1)
假设您熟悉标准库中的malloc
和free
函数,请执行以下操作:
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时分配并在其销毁时取消分配