Программа по генерации 7-значного номера время от времени (не всегда) падает с ошибкой memory violation - C (СИ)
Формулировка задачи:
Добрый день.
моя программа по генерации 7-значного номера время от времени (не всегда) падает с ошибкой memory violation : Exception ACCESS_VIOLATION received.
проблема, судя по ошибке - в указателях, почему при непродолжительной работе программа начинает падать?
char* get_username() { char* username; int curr_num = 0; char buff[2] = {'\0'}; memset(buff, 0, sizeof(buff)); if ((username = (char*)malloc(7 + 1)) == NULL) { to_mylog("Insufficient memory available"); return NULL; } srand(time(NULL)); ///////////////////////////// for(i = 0; i < 7; i++) { curr_num = rand() % 10; itoa(curr_num, buff, 10); strcat(username, buff); } to_mylog("%s\n", username); username[7] = '\0'; return username; }
добавлю, иногда ф-ия возвращает правильную строку, например 8906886, и программа отрабатывает нормально, но спустя некоторое время, ф-ия начинает возвращать строки типа þ8906886, тоесть в начале какие то кракозябры, и в этом случае уже нарушение доступа к памяти
Решение задачи: «Программа по генерации 7-значного номера время от времени (не всегда) падает с ошибкой memory violation»
textual
Листинг программы
char* get_username(const unsigned int seed) { srand(seed); // и дальше } // Причем вызывать функцию надо будет не так char* username = get_username(time(NULL)); // А вот так: srand(time(NULL)); // один раз в самом начале программы! // некая часть программы char* username = get_username(rand()); // и каждый аналогичный вызов вот такой
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д