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