Dear Expert, I have a simple C program with 'linklist' data structure processing as below. ////////////////////////////////////// #include <stdio.h> #include <stdlib.h> typedef struct node{ unsigned int id; struct node * next; }; void main(void){ struct node * first; struct node * n; unsigned int i; printf("/////////////////\r\n"); first->next = (struct node *) malloc(sizeof(struct node) * 10); if(first->next == NULL)printf("** Not enough memory space\r\n"); printf("first->next %X\r\n",first->next); first = NULL; //no first link for(i=1;i<=10;i++){ n->id = i; n->next = first; first = n; }; while(first != NULL){ printf("n->id = %X , n->next %X\r\n",first->id,first->next); first = first->next; } free(first); } ///////////////////// When I run this program , the result is unterminate loop. But I try to test this program on Turbo C++ when including "malloc.h" , it is work and result is correct! What wrong with this codeing? Then,I wonder does C51 support link list data processing? I will looking forward your reply and thank you for all suggestion. Birdy.
Looking at your code...
void main(void){ struct node * first; struct node * n; unsigned int i; printf("/////////////////\r\n"); first->next = (struct node *) malloc(sizeof(struct node) * 10);
"This probably writes over some important memory." like the stack, for instance...
like the stack, for instance... Or worse, Registers! Jon
both sound potentially disastrous to me!!
Or worse, Registers! So what? If it "appears" to work, pass it down the line to QA where any such problems will certainly be caught...right?