在C函数中,下面的代码是:
val *val_ptr;
for (val_ptr = *(val **)vl; val_ptr->id; val_ptr++)
free(val_ptr->str);
不知何故,我无法改变这些代码。我需要在此之前编写代码,以便将内存分配给val_str-> str。我写了下面的代码:
for (val_ptr = *(val **)vl; val_ptr->id; val_ptr++)
{
char* abc = "testing";
val_ptr->str = strdup(abc);
}
抛出错误。有人可以就此提出建议吗?
答案 0 :(得分:0)
Val应该是一个看起来像这样的结构
Dim i As Integer
For i =3 to 21 step 6
Output.Sheets("Table6.1").Range(Cells(i,2), Cells(4,i+5)).Copy
Table.Sheets("Sheet1").Range(... ?? what to put there).PasteSpecial xlValues
如果vl == NULL,则表示它没有指向任何内容......因此您无法访问它。 这就是你断错的原因。
你必须使用malloc分配你需要的内存(我想你刚刚学习了指针和malloc)。
typedef struct s_val
{
char *str;
int id;
} val;
之后,你必须分配所有str指针,如果你愿意,你可以使用strdup,但我认为训练使用malloc应该是一个好主意(重新编译strdup应该是一个很好的练习开始;))。< / p>
我让你考虑for循环的停止条件。
我不会忘记,你必须在施加for循环后释放vl!