calloc 导致段错误
Calloc causes segmantation fault
我正在尝试在我的结构数组的结构中添加一组字符串。我在 Macos 中使用 gcc(不是 clang)对此进行了编码并且工作正常但是当我将我的代码导入 Windows 这个 calloc 导致分段错误。
index = varlist.var_count;
varlist.var_count++;
varlist.vars = (Var *)realloc(varlist.vars, sizeof(Var) * varlist.var_count);
varlist.vars[index].called = (char *)calloc(1, sizeof(char) * strlen(var.called));
strcpy(varlist.vars[index].called, var.called);
这是我的结构定义
struct Var
{
int id;
char * called;
void * ptr;
int type;
};
typedef struct Var Var;
struct Varlist
{
int var_count;
Var * vars;
};
typedef struct Varlist Varlist;
有问题的代码是这段代码
varlist.vars[index].called = (char *)calloc(1, sizeof(char) * strlen(var.called));
strcpy(varlist.vars[index].called, var.called);
您正在使用旨在处理字符串的函数(如 strlen
和 strcpy
),但分配的字符数组不包含字符串,因为它们没有为终止保留 space零字符 '[=14=]'
.
你至少要写得像
varlist.vars[index].called = calloc( strlen(var.called) + 1, sizeof(char) );
其中var.called
还必须包含一个字符串。
所以还要检查指针var.called
指向的字符串形成的代码。
我正在尝试在我的结构数组的结构中添加一组字符串。我在 Macos 中使用 gcc(不是 clang)对此进行了编码并且工作正常但是当我将我的代码导入 Windows 这个 calloc 导致分段错误。
index = varlist.var_count;
varlist.var_count++;
varlist.vars = (Var *)realloc(varlist.vars, sizeof(Var) * varlist.var_count);
varlist.vars[index].called = (char *)calloc(1, sizeof(char) * strlen(var.called));
strcpy(varlist.vars[index].called, var.called);
这是我的结构定义
struct Var
{
int id;
char * called;
void * ptr;
int type;
};
typedef struct Var Var;
struct Varlist
{
int var_count;
Var * vars;
};
typedef struct Varlist Varlist;
有问题的代码是这段代码
varlist.vars[index].called = (char *)calloc(1, sizeof(char) * strlen(var.called));
strcpy(varlist.vars[index].called, var.called);
您正在使用旨在处理字符串的函数(如 strlen
和 strcpy
),但分配的字符数组不包含字符串,因为它们没有为终止保留 space零字符 '[=14=]'
.
你至少要写得像
varlist.vars[index].called = calloc( strlen(var.called) + 1, sizeof(char) );
其中var.called
还必须包含一个字符串。
所以还要检查指针var.called
指向的字符串形成的代码。