Сообщение Re: Как правильно освободить память от массива символов, пол от 28.04.2015 12:06
Изменено 28.04.2015 12:08 Кодт
Здравствуйте, newpy, Вы писали:
N>char * genstr(unsigned int len) {
N> char chars[] = {'0','1','2','3','4',
N> '5','6','7','8','9',
N> 'A','B','C','D','E','F',
N> 'G','H','I','J','K',
N> 'L','M','N','O','P',
N> 'Q','R','S','T','U',
N> 'V','W','X','Y','Z',
N> 'a','b','c','d','e','f',
N> 'g','h','i','j','k',
N> 'l','m','n','o','p',
N> 'q','r','s','t','u',
N> 'v','w','x','y','z', '\n', ' ',
N> '#'
N> };
char const * charset = "012345......#";
// так и записывается компактнее, и не создаётся каждый раз на стеке, а лежит в секции констант
N> char * str = new char [len];
char * str = new char [len+1]; // концевой нолик не забываем - иначе это не совсем строка, а просто массив символов
N> for (unsigned int ix = 0; ix < len; ++ix){
N> // Первую половину текста мы генерируем без решетки
N> if (ix < len / 2)
N> str[ix] = chars[rand() % sizeof(chars) - 1];
N> else
N> str[ix] = chars[rand() % sizeof(chars)];
N> }
str[len] = 0; // вот он, концевой нолик
N> return str;
N>}
Re: Как правильно освободить память от массива символов, пол
Здравствуйте, newpy, Вы писали:
N>char * genstr(unsigned int len) {
N> char chars[] = {'0','1','2','3','4',
N> '5','6','7','8','9',
N> 'A','B','C','D','E','F',
N> 'G','H','I','J','K',
N> 'L','M','N','O','P',
N> 'Q','R','S','T','U',
N> 'V','W','X','Y','Z',
N> 'a','b','c','d','e','f',
N> 'g','h','i','j','k',
N> 'l','m','n','o','p',
N> 'q','r','s','t','u',
N> 'v','w','x','y','z', '\n', ' ',
N> '#'
N> };
static char const chars[] = "012345......#";
// так и записывается компактнее, и не создаётся каждый раз на стеке, а лежит в секции констант
size_t count = sizeof(chars)-1; // исключим концевой нолик из таблицы
N> char * str = new char [len];
char * str = new char [len+1]; // концевой нолик не забываем - иначе это не совсем строка, а просто массив символов
N> for (unsigned int ix = 0; ix < len; ++ix){
N> // Первую половину текста мы генерируем без решетки
N> if (ix < len / 2)
N> str[ix] = chars[rand() % count - 1];
N> else
N> str[ix] = chars[rand() % count];
N> }
str[len] = 0; // вот он, концевой нолик
N> return str;
N>}