繁体   English   中英

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

[英]Pointer to struct containing structs

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

是否需要对结构中的结构进行分配,或者如果外部结构被分配,是否会防止内部结构在传递指针时被删除或丢失?

我要问的结构是

struct thread_data
{
    position starttile;
    position destinationtile;
    char *message;
};

其中 position 本身是一个不包含指针的结构

如果结构体包含子结构体,那么一般都是memory的一个块。 所以不会有单独的分配。

如果该结构包含指向结构的指针,那么我之前的评论将不适用。 在这种情况下,这取决于你在做什么。

您是否考虑过发布一点代码,以便人们知道您的想法。

如果您这样做,您可能会发现管理 memory 会更容易

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包含指向结构的指针,则需要将它们分配到某个地方。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM