Итак, у меня есть входной файл, который имеет следующий текст (каждая строка = пользователь):
012345678;danny;cohen;22;M;danny1993;123;1,2,4,8;Nice person
223325222;or;dan;25;M;ordan10;1234;3,5,6,7;Singer and dancer
349950234;nadav;cohen;50;M;nd50;nadav;3,6,7,8;Engineer very smart
Сначала код выделяет место для одного пользователя, а затем перераспределяет пространство для еще 1 (для каждого пользователя).дело в том, что все идет отлично, пока второй раз не перераспределяется, а затем показывает ошибку «Упражнение 6.exe вызвало точку останова».Я также упомяну, что ошибка была сначала: «wntdll.pdb не загружен», но я попытался сделать то, что VS suggeset - что-то с символами. Затем пришла ошибка «Триггерная точка».
Я попытался переключитьстрок в текстовом файле, но это не имело значения, проблема возникает после попытки перераспределения во второй раз.
позвольте мне показать вам соответствующую часть кода:
int main()
{
//intiallizing variables
int menArraySize = 0;
//creating a NULL array pointer (array) for men
User *head = NULL;
readInputFile(head, &menArraySize, list);
}
void readInputFile(User *head, int *menArraySize, WomenList *list)
{
//temporary data types for the the stracture we're creating
char id[10];
char *firstName = NULL;
char *lastName = NULL;
char age[4] = { 0 };
char gender = '\0';
char *userName = NULL;
char *password = NULL;
char hobbies = 0;
char *description = NULL;
//regular function data types
int i = 0, j = 0, k = 0, currentDetail = 1, size;
char currentString[212] = { 0 };
int currentChar;
//opening the input file
FILE *input = fopen("input.txt", "r");
...
//long code for allocating room for each string (firstName, lastName, etc...)- irelevant
...
head = addMale(head, menArraySize, id, firstName, lastName, age,
gender, userName, password, hobbies, description);
...
//rest of the function isn't relevant
}
User* addMale(User *head ,int *menArraySize, char id[], char *firstName,
char *lastName,char age[], char gender, char *userName,
char *password, char hobbies, char *description)
{
//if the array is empty, allocate room for one user
if (*menArraySize == 0)
{
head = (User *)malloc(1 * sizeof(User));
}
//if the array isn't empty, reallocate room for one more user
else
{
**this is the line in which the error occurs (second time reallocating,
third dynamic allocation total for this pointer)**
head = (User *)realloc(head, (*menArraySize + 1) * sizeof(User));
}
//if the allocation failed
if (head == NULL)
exit(1);
//pointing to the new user we created
head = &head[*menArraySize];
//apply all details to the user
strcpy(head->id, id);
head->firstName = firstName;
head->lastName = lastName;
strcpy(head->age, age);
head->gender = gender;
head->userName = userName;
head->password = password;
head->hobbies = hobbies;
head->description = description;
//applying an index number to the user
head->index = *menArraySize;
//pointing back to the head of the array
head = &head[0];
//updating the variable showing the size of the array
*menArraySize = *menArraySize + 1;
return head;
}
почему это происходит? что я могу сделать, чтобы это исправить? спасибо!