[英]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.