|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.12.2009, 15:20 | #1 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
Управление динамическим массивом
Добрый день! Подскажите, что я делаю не так при управлении размером динамического массива? Язык - c
Код:
Код:
Задумка вобще такая: я переписываю прогу с Delphi на C (Linux) и мне нужна альтернатива TStringList, в котором содержатся только числа. В процедуре console_add задумка такая: для динамического массива console должно резервироваться памяти ровно на один дополнительный елемент (тип int) при каждом вызове процедуры. Ошибка вылетает после 6 вызовов. Последний раз редактировалось abr_question; 17.12.2009 в 15:22. |
17.12.2009, 16:18 | #2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Ну вы же понимаете, что sizeof(console) == 4 байта на 32-х разрядных системах? Всегда. Мысль с console_p верна(если я правильно её понял, это ведь счётчик элементов?) но нужно домножать её на sizeof(int). А вообще так как вы делаете делать не хорошо, ибо медленно очень, увеличивайте размер массива сразу в два раза или как-то так. Отдельная переменная будет следить за размером массива, другая за кол-ством элементов в нём
|
17.12.2009, 17:12 | #3 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
Код:
|
17.12.2009, 17:31 | #4 | |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
Цитата:
Код:
Счас попробую с увеличением массива в 2 раза. Проблемка с _msize. Справочники указыают, что она хранится в malloc.h, но у меня malloc.h не содержит такой функции. Более того, весь /usr/include не содержит ни одного файла, в которой данная функция присутствует. Она не устарела случаем? |
|
17.12.2009, 17:40 | #5 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
Ааааагрх! Всё! Нашёл, кажется, ошибку
Я же инициализирую console_p = 0. Размер тоже правильно устанавливаю, как ++console_p * sizeof(int). А затем делаю глупейшую ошибку и присваиваю значение по адресу console_p, который уже за массивом. Счас переписал Код:
Спасибо всем, кто помог |
17.12.2009, 17:43 | #6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Код:
Последний раз редактировалось netrino; 17.12.2009 в 18:29. Причина: поправил |
17.12.2009, 19:28 | #7 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
netrino, спасибо! Возьму вариант на заметку, если полетит ныне существующий.
У меня щё есть один вопрос, но он уже по указателям. Хочу сделать так, чтобы в функция обрабатывала не один массив, а несколько. То есть, возникла необходимость функцию привести к общему виду. Фактически получилось так: Код:
|
17.12.2009, 19:40 | #8 | |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
Цитата:
Если я помог вам - порадуйте меня, нажмите на весы слева
|
|
17.12.2009, 20:09 | #9 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
RoS, имеется ввиду ето?:
Код:
|
17.12.2009, 21:52 | #10 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
С двойным указателем там верно было.. Насчёт
Код:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с динамическим массивом | TheKnyazz | Общие вопросы C/C++ | 3 | 28.04.2009 18:37 |
Проблемма с динамическим массивом | Arassir | Помощь студентам | 3 | 15.02.2009 12:37 |
Помогите с динамическим массивом!!!! | vish25 | Помощь студентам | 2 | 31.05.2008 19:20 |
проблема с динамическим массивом | romeo007.06 | Общие вопросы Delphi | 1 | 03.04.2008 20:18 |
проблема с динамическим массивом | kommunist | Помощь студентам | 6 | 11.11.2007 21:18 |