早班,
我是 C 新手,我有一个用于创建图形的结构:
struct map {
int vertices;
int edges;
int **edgeMatrix;
char **names;
};
然后,当我尝试通过函数 Graph graphNew(int v) 创建一个新图时,我设法创建一个新的空图,将值应用于 g-> 顶点和 g-> 边,但是在创建邻接矩阵时对于边缘,我得到堆缓冲区溢出,我试图在堆上分配边缘指针数组:
Graph graphNew(int v) {
assert(v > 0);
Graph g = malloc(sizeof(Graph));
if(g == NULL) {
fprintf(stderr, "Error, no memory allocation!\n");
exit(EXIT_FAILURE);
}
g->vertices = v;
g->edges = 0;
g->edgeMatrix = malloc(v * sizeof(int *)); <---- ERROR:
我到处都看过,但似乎不明白为什么我无法使用 EdgeMatrix 的 malloc 语句创建初始指针数组。我已经使用 GDB 进行了单步调试,g 的地址为 0x602000000010,但是当我点击 malloc 语句时,我生成了这个堆缓冲区溢出错误:
我尝试了指针内存分配语句的不同组合,即使它们可以编译,我也得到相同的结果。
有人可以帮忙解释为什么我无法分配 int 指针数组来开始填充边缘矩阵吗?
干杯P。