指向包含结构体的结构体指针



我正在编写一个多线程应用程序,并希望传递指针到结构体。

结构中的结构需要被错置吗?或者如果外部结构被错置,它会防止内部结构在传递指针时被删除或丢失吗?

我要问的结构是
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包含指向结构的指针,那么它们需要被分配到某个地方。

如果您的外部结构包含实际结构,则更容易。即便如此,对于指针,只要确保在内部结构被完全分配之前,永远不要让指向外部结构的指针可供其他线程使用——这避免了分配时的线程问题。解分配需要适当小心,以确保独占访问。

最新更新