提问人:Haznut 提问时间:12/6/2021 最后编辑:Haznut 更新时间:12/6/2021 访问量:120
SIGABRT (信号 SIGABRT) 在运行 malloc 时
SIGABRT (signal SIGABRT) while running malloc
问:
当 malloc 多次运行时,程序中会出现问题。我收到错误:。我看过类似的问题,但到目前为止没有任何帮助。SIGABRT (signal SIGABRT)
该程序很简单,因此如果您愿意,可以跳到下面的程序。我还给出了一个解释,以防万一您可能需要它。
如果您有任何问题,请告诉我,我一定会回答的。
该计划解释说:
在main中,我有一个指针数组(线),其中每个指针都指向一个表示线的字符串。然后,我调用一个函数来从输入中获取行。
getlines 函数有两个 for 循环,一个在另一个里面。
- 外部循环移动到指针数组中的下一个指针。由于每个指针代表一条线,因此它会移动到内循环末尾的下一行。
- 内部循环添加字符,直到文件末尾或到达换行符。它还检查字符串是否不超过 MAXLINE。
- 在内部循环的开头,malloc 用于在数组内添加一个指针,该指针将引用字符串(行)。
- 然后从输入添加字符,并链接到此指针。
以下是程序:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXLINES 100
#define MAXLINE 100
int main() {
char *line[MAXLINES];
getlines(line);
}
void getlines(char **line){
int c = 0;
char *l = 0;
for(;c!= EOF; line++) {
for (*line = NULL; (l - *line) != MAXLINE && (c = getchar()) != EOF && c != '\n'; l++) {
if (*line == NULL) {
*line = malloc(sizeof(char));
l = *line;
}
*l = c;
}
*l = '\0';
}
*line = NULL;
}
再次感谢你:)
答: 暂无答案
上一个:动态释放 2D 矩阵崩溃
评论
*line = malloc(sizeof(char)); l = *line; l++; *l = c;
*l
l
* MAXLINE
malloc
(l - *line) != MAXLINE
line
line
(l - *line) != MAXLINE