Access Violation ב-C...
כתבתי את התוכנית הבאה, שאמורה לקלוט רשימה של שמות ולשרשר את כולם באותו מערך, בצורה דינאמית (המערך יגדל עם כל שם שיוכנס), כשהשמות יופרדו ברווח. משום מה, למרות שהפונקציה עצמה עובדת כמו שצריך, עם היציאה מהפונקציה (או עם הפעלת הפונקציה הבאה - free() - התוכנית קורסת בגלל Access Violation. אם מישהו יוכל לשים את האצבע על מה לא בסדר בתוכנית, אני מאוד אשמח
. והנה קטע הקוד:
כתבתי את התוכנית הבאה, שאמורה לקלוט רשימה של שמות ולשרשר את כולם באותו מערך, בצורה דינאמית (המערך יגדל עם כל שם שיוכנס), כשהשמות יופרדו ברווח. משום מה, למרות שהפונקציה עצמה עובדת כמו שצריך, עם היציאה מהפונקציה (או עם הפעלת הפונקציה הבאה - free() - התוכנית קורסת בגלל Access Violation. אם מישהו יוכל לשים את האצבע על מה לא בסדר בתוכנית, אני מאוד אשמח
void input (char* ptr) { char name[]={0}; char* pointer=ptr; unsigned int size=0; int i; printf ("Please enter the class students' names:\n"); scanf ("%s", name); ptr = (char*)realloc(ptr,0); while (strcmp(name, "END")) { if (ptr==NULL) //allocation failed { printf ("not available"); exit (1); } else // if allocation succeeded, the program would continue { size = _msize (ptr); // ptr's size prior to the reallocation ptr = (char*)realloc(ptr, size+(strlen(name)+1)*sizeof(char)); if (ptr==NULL) //allocation failed { printf ("not available"); exit (1); } else for (i=0 ; size+i < size+strlen (name) ; ++i) { *(ptr+size+i)=name; } *(ptr+size+strlen(name))=' '; } scanf ("%s", name); } } int main (void) { char* ptr=0; input (ptr); free (ptr); }