![]() |
|
Модераторы: bsa |
![]()
|
|
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: нет Всего: 1 |
собсно хочу использовать массив строк, но без использования векторов и дополнит структур, а именно таким способом, объясните как мне правильно делать проверку пустой указатель или нет, там где в моем коде комментарий, корректно ли так вообще и какими проблемами сулит использование такой конструкции ? |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Вы объявляете массив указателей на char, Затем (не выделив память ни под один указатель) передаете его в функцию и там пытаетесь добавить в неинициализированный массив. Вот и вылет. Сначала выделите память под мамассив: mass = (char**)malloc(15, sizeof(char*)); (надеюсь ничего не попутал - посмотрите хелп по этой функции) Добавлено через 2 минуты и 14 секунд Это со строками не работает! Используйте строковые функции - такие как strcmp, strncmp Вы какую литературу читали? По идее эти вопросы как правило подробно освещаются. |
|||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: нет Всего: 1 |
может я не прав но разве это могло решить проблему, так это локальная переменная при malloc в куче выделяется, но смысл остается тот же if (mass[2]!="") при отладке mass[2] содержит 0xcccccccc мне это нужно как то сравнивать типа там INVALID PTR или еще что-то такое, если такое возможно...то есть логика программы например нужно перечислить названия процессов и занести в этот массив, размер которого берется с запасом плюс с проверкой не выхода за границы массива, при обработке этого массива интересует перебор колва валидных записей в этом массиве
|
|||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Я аидимо не проснулся - полную ерунду написал Все у вас нормально с выделением памяти, вам просто начальную инициализацию массива надо сделать и все Добавлено через 5 минут и 37 секунд Предложение 1: Если пробегаете по массиву строк начиная с первого уэлемента - то установите значение NULL как признак окончания списка строк, например так:
Другой способ - перед началом работы сразу обнулите массив так:
или при помощи функции memset (этот способ мне не нравится - так как я не уверен, что NULL и 0 одно и то же) |
||||
|
|||||
| TiKKi |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.5.2006 Репутация: нет Всего: 2 |
Ага.
Еще как вариант инициализации. |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
||||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
может вам динамически создавать массив? тогда и не нужно будет угадывать "запас". |
|||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: нет Всего: 1 |
да теперь вроде ясненько...
динамически выделять на моем примере
сулит двойным действием сначала перебрать процессы для подсчета кол-ва процессов, потом динамически выделить память, и потом еще раз пройтись по процессам чтобы добавить их имена в массив... все-таки при работе с объемными данными лучше я так понял выделять в куче память чем в стеке ? |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
ок. тогда можно создать написать свой класс "Список" И при каждой итерации добавляйте название процесса в новый элемент списка. Это сообщение отредактировал(а) zim22 - 7.3.2009, 13:18 |
|||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: нет Всего: 1 |
писать свой класс думаю смысла нет vector есть уже, мне это для более простых операций...
впринципе вопрос решен |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |