#include<stdio.h>
#include<stdlib.h>
struct node
{
int value;
struct node* next;
} *graph;
int main(void)
{
int V,E,i,u,v;
struct node *ptr,*ptr1;
ptr=malloc(sizeof(struct node *));
ptr1=malloc(sizeof(struct node *));
scanf("%d",&V);
graph=malloc(V*(sizeof(struct node *)));
if(!graph)
printf("Not allocated");
for(i=0;i<V;i++)
{
graph[i].next=NULL;
}
scanf("%d",&E);
for(i=0;i<E;i++)
{
//printf("**\n");
scanf("%d %d",&u,&v);
ptr=malloc(sizeof(struct node *));
ptr1=malloc(sizeof(struct node *));
ptr->value=u;
ptr->next=graph[v].next;
graph[v].next=ptr;
ptr1->value=v;
ptr1->next=graph[u].next;
graph[u].next=ptr1;
}
for(i=0;i<V;i++)
{
ptr=graph[i].next;
printf("**\n");
printf("%d ===>\n",i);
while(ptr)
{
printf("%d->",ptr->value);
ptr=ptr->next;
}
printf("NULL\n");
}
}
Я получаю следующее сообщение об ошибкеЯ реализую графа с использованием списка смежности
a.out: malloc.c: 2369: SysMalloc: Утверждение `(old_top == (((mbinptr) (((char *) & ((av) -> bins [((1) - 1) * 2])) - __ builtin_offsetof (struct malloc_chunk, fd)))) & & old_size == 0) || ((unsigned long) (old_size)> = (unsigned long) ((((__builtin_offsetof (struct malloc_chunk, fd_nextsize)) + ((2 * (sizeof (size_t))) - 1)) & ~ ((2 * SizeOf (size_t) )) - 1))) & & ((old_top) -> размер & 0x1) & & ((неподписанных долго) old_end & pagemask) == 0)»не удалось. Aborted (core dumped)
Спасибо. Получил мою ошибку. Но в некоторых программах «malloc (sizeof (struct node *)) он работал, есть ли какие-либо объяснения для этого? – user2711221
* Неопределенное поведение *. C и C++ не проверяют переполнение памяти, поэтому слишком большой текст Маленький выделенный блок просто перезаписывает материал за ним. Если вам повезет, программа выйдет из строя, и вы увидите свою ошибку. Если вы этого не сделаете, ошибка останется незамеченной, пока она случайно не сработает после другого изменения позже. – Quentin