Автор
|
Тема: Массив ломается
|
Susik |
опубликован 14-01-2002 01:22 MSK
В общем есть функция void Func1(char *z) {z=new char[12];} Вопрос в том, будет ли существовать созданный в ней динамический массив после завершения функции? На опыте работало тока 1 раз, потом отказывалось. :)
|
DEiL
|
опубликован 14-01-2002 01:54 MSK
массив твой улетил в гиперпространство такими темпами%) new char[12] присваивает z НОВЫЙ адрес, а старый остаётся нетронутым :) |
DmitryRyvkin
|
опубликован 14-01-2002 02:15 MSK
Пиши лучше так. void Func1(char *&z) {z=new char[12];} Тока зачем в данном случае это надо. Принудительно по нужному адресу все равно память не выделиш |
Susik
|
опубликован 14-01-2002 02:32 MSK
Я так и думал... Лана. Улетел - ну и х" с ним. Я его иницилизирую тогда просто так, не в этой долбанной функции. :) А ваще удобно было бы... |
DimaK
|
опубликован 17-01-2002 10:45 MSK
Кто куда улетает?! char *p; void func(char &p) { p=new[12]; } но и пример DmitryRyvkin должен работать |
Valery
|
опубликован 17-01-2002 11:13 MSK
Мужики, ну неужели так лениво проверить, что вы пишете, тем более для новичка, он же вашу писанину может и за эталон принять. Всего то пару ошибочек, но как смысл меняется. char *p; void func(char* &p) { p=new char[12]; }
|
Valery
|
опубликован 17-01-2002 11:14 MSK
гуру, блин... |
ertzog
|
опубликован 17-01-2002 19:26 MSK
Для того, что бы у тебя по выходу из функции память освобождалась, используй alloca() Кажется имеется в Single Unix Specification, т.е. стандарт. Но в glibc точно есть. |