- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人知道为什么这个重新分配代码不起作用吗?
typedef struct symbol{
char **arg;
int alloc_pam;
} TSymbolPtr
TSymbolPtr symb;
symb.arg = realloc(symb.arg, (70));
这是打印出来的错误:
*** glibc detected *** ./ifj: realloc(): invalid next size: (SIGABRT)
代码示例:
希望它会更清楚。即使我认为它不会让我发布它,除非我添加更多详细信息,但很可能根本不会发送这个长代码:(
int rParams_n()
{
int result;
actToken = getNextToken();
result = rType();
i++;
if(i >= symb.alloc_pam){
printf("\trealloc \n");
symb.arg = (char **)realloc(symb.arg, (symb.alloc_pam) * 2); //error
symb.alloc_pam *= 2;
}
symb.arg[i] = malloc(sizeof(char*)* ((strlen(actToken.data)) + 1));
strcpy(symb.arg[i],actToken.data);
actToken = getNextToken();
...
}
/*
* <params> -> <type> "ID" <params_n>
* <params> -> "EPSILON"
*/
int rParams()
{
count=0;
if(symb.arg == NULL)
symb.arg = malloc(sizeof(char *) * (symb.alloc_pam));
int result;
// <params> -> "EPSILON" - params je prazdne, cekam ")"
if (actToken.typ == PZAVORKA) return ERR_CODE_SUCC; // vracim se do rFunc
// else jedu podle <params> -> <type> "ID" <params_n>
result = rType();
if (result != ERR_CODE_SUCC) return result;
symb.arg[i] = malloc(sizeof(char*) * ((strlen(actToken.data)) + 1));
strcpy(symb.arg[i], actToken.data);
count++;
i++;
actToken = getNextToken();
symb.arg[i] = malloc(sizeof(char*) * ((strlen(actToken.data)) + 1));
strcpy(symb.arg[i],actToken.data);
actToken = getNextToken();
// rule rParams_n
result = rParams_n();
..
}
提前致谢。
最佳答案
很难说,因为我们不知道 **arg 的当前大小,也不知道 (70) 的含义。
您的 **arg 用于分配动态指针数组,是吗?
如果您尝试在此处分配 70 char *,则需要使用 sizeof(char *) * 70:
symb.arg = (char **) realloc(symb.arg, (sizeof(char *) * (70)));
当然,这是假设 symb.arg 已经分配了 - 如果您使用上述方法来执行此操作,此时不太可能但不可能说。
然后我们可以使用动态分配的 char * 来分配缓冲区,这是您想要做的吗?
symb.arg[0] = (char *) malloc(sizeof(char) * (lengthofstring + 1));
例如。希望这会有所帮助,但就像我说的,很难说只有发布的程序的零星片段。
预计到达时间 - 抱歉,我的错误 - 我看到你对 malloc() 的调用,它们看起来很好,realloc 是相同的,唯一的区别是你传递了要调整大小的指针作为第一个参数 - realloc() 的第二个参数是本质上与 malloc() 的第一个也是唯一的参数相同。
关于c - 重新分配打印出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745220/
我有一个经典的 ASP 页面 (VBscript),它在服务器端生成 XML,然后 Response.Writes。该页面根本没有客户端。 但是我需要将其转换为 JSON。由于我找不到有效的 ASP
我想从客户端应用程序的 HDFS 中读取特定的 SequenceFile。我可以使用 SequenceFile.Reader 来做到这一点,它工作正常。但是是否也可以通过分析抛出的 IOExcepti
我是一名优秀的程序员,十分优秀!