CAHTA_1939 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 (изменено) · Жалоба помогите. возникла проблема при выделении динамической памяти под структуру. вот сама структура struct sMENU_WIN { byte **labelname; // строка меню. byte i_labelname; // длина labelname. bit f_flag; // поддержка флага. bit flag; // состояние флага. bit f_goto; // поддержка перехода. byte ptr_fgoto; // "переход" bit f_func_exe; byte *ptr_func_exe; }; struct _window_ { struct sMENU_WIN *_win; }; struct sMENU { byte PP; // byte *stack; // byte *stack_1; // struct _window_ ss0; //window#0 struct _window_ ss1; //window#1 }; struct _window_ *p_window_[2]; //кол-во окон! struct sMENU _menu_; // это я делаю для удобства. void ini_p_window(&_menu_); void ini_p_window(struct sMENU *p) { p_window_[0] = &p->ss0; // main p_window_[1] = &p->ss1; // window 1 } а вот сама функция для выделения памяти и инициализации void ini_struct(&_menu_); void ini_struct(struct sMENU *ptr) { ... (*p_window_[0])._win = (struct sMENU_WIN*)malloc(13*sizeof(struct sMENU_WIN)); if((*p_window_[0])._win == NULL){ _puts(1, 0, mem_err); return;} else { _puts(1, 0, OK); } ... при выделении до (6*sizeof(struct sMENU_WIN) все работает нормально. а если больше 6, то возникает ошибка. если в структуре вместо struct sMENU_WIN *_win; написать struct sMENU_WIN _win[13]; то все будет работать хорошо. но мне нужно чтобы выделялась динамически Изменено 7 ноября, 2007 пользователем CAHTA_1939 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 121 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба при выделении до (6*sizeof(struct sMENU_WIN) все работает нормально. а если больше 6, то возникает ошибка.Так посмотрите, сколько памяти вы отвели под HEAP. И посчитайте, сколько запрашиваете. Еще учтите, что кроме выделения вам N байт памяти резервируется несколько служебных для поддержания кучи, т.е. память под кучу надо резервировать с запасом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CAHTA_1939 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба угу, уже посмотрел. там по стандаргу выделенно чтото около 80. я поставил 2048... откуда будет отниматься эта память из озу или из пзу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 121 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба угу, уже посмотрел. там по стандаргу выделенно чтото около 80. я поставил 2048... откуда будет отниматься эта память из озу или из пзу?По какому стандарту? :07: Что-то я не слышал, чтобы объекты динамически размещались в ПЗУ. Кончно из ОЗУ. Загляните в .xcl - там это все указывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться