我正在编写一个多线程应用程序,并希望传递指针到结构体。
结构中的结构需要被错置吗?或者如果外部结构被错置,它会防止内部结构在传递指针时被删除或丢失吗?
我要问的结构是struct thread_data
{
position starttile;
position destinationtile;
char *message;
};
其中position是一个不包含指针的结构体本身
如果结构体包含子结构体,那么它通常都是一个内存块。这样就没有单独的分配了。
如果struct包含指向struct的指针,那么前面的注释就不适用了。在这种情况下,这取决于你在做什么。
你是否考虑过发布一小段代码,这样人们就会知道你在想什么
如果您这样做,您可能会发现更容易管理内存
struct X {
struct Y data;
};
struct X* var = malloc(sizeof(struct X));
代替
struct X {
struct Y* pData;
};
struct X* var = malloc(sizeof(struct X));
var->pData = malloc(sizeof(struct Y));
如果您的外部struct
包含实际的结构,则无需单独分配它们。如果你的外部struct
包含指向结构的指针,那么它们需要被分配到某个地方。
如果您的外部结构包含实际结构,则更容易。即便如此,对于指针,只要确保在内部结构被完全分配之前,永远不要让指向外部结构的指针可供其他线程使用——这避免了分配时的线程问题。解分配需要适当小心,以确保独占访问。