簡體   English   中英

C-在struct內部分配struct數組

[英]C - Allocation of struct array inside struct

我有兩個結構:

typedef struct Term {
    double coeff;
    int *pow;  
} Term;


typedef struct Polynomial {
    char *vars;
    int num_terms; 
    int num_vars;
    int ordering; 
    Term *terms;
}Polynomial;

我的初始化看起來像這樣:

Polynomial *p;
p = malloc(sizeof(*p)); 
p->num_vars = num_vars;
p->num_terms = num_terms;
p->vars = malloc(sizeof(char) * num_vars);
// !!!!! next line
p->terms = malloc(sizeof(Term) * num_terms);
p->ordering = 0;

memcpy(p->vars, vars, sizeof(char) * num_vars); 
for (int i = 0; i < num_terms; i++) {
    p->terms[i].pow = malloc(sizeof(int) * num_vars); 
}

運行valgrind:

valgrind --leak-check=yes --track-origins=yes ./poly

告訴我:

==22734== 16 bytes in 1 blocks are definitely lost in loss record 1 of 1
==22734==    at 0x4C29F90: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==22734==    by 0x400652: empty_poly (in /home/pietro/tmp/test/poly)
==22734==    by 0x40074E: main (in /home/pietro/tmp/test/poly)

完整的代碼可作為要點

如何正確初始化結構?

謝謝!

錯誤很明顯。 您忘記了免費的poly-> terms。 嘗試在free(poly-> vars)之后添加free(poly-> terms)。 初始化沒有什么錯,您不只是釋放分配的所有數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM