Программа по генерации 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()); // и каждый аналогичный вызов вот такой

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы