簡體   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