Использование функции NEW или вопрос про динамическую память
............
char *test = new char;
cout<<strlen(test)<<" --- "<<i<<"\n";
i=0;
...........
что получаеться
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
33 --- 29
38 --- 34
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
67 --- 63
33 --- 29
Press any key to continue
и тут у меня возникает законамерный вопрос если I=4 то почему размер выделеной памяти= 8????? и каждый новый на 4 байта больше???? ведь чар =1 байт. Заранее благодарен за пояснения. Если у кого есть материалы по этой теме прошу поделаться
Дело в том, что strlen(test) показывает не размер массива, а "длину" строки - то есть, число байт до нулевого символа. А так как new не производит обнуление выделенной памяти для объектов, не имеющих конструкторов, то символьный массив содержит случайные значения, посему "длина строки" будет произвольной - до первого встречного нуля :)