![]() |
|
Модераторы: bsa |
![]()
|
|
| 6axyc |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
проблемма такова имею стракт
при выделении места на сам стракт,*contactName по нулям badPtr. когда отдельно выделяю место
то почемуто вместо одного чара, выделяется место под 16, а когда делаю
, то выкидывает. есть идеи? |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
а теперь еще раз, не жуя, и на русском языке, пожалуйста.
|
|||
|
||||
| 6axyc |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
хмм даже и не знаю.
вобщем я сам не понимаю, что происходит. так что не важно, как только пойму точнее, что происходит, опишу. спасибо. |
|||
|
||||
| feodorv |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Конечно! Вот была бы "стракт" описана так:
то память под contactName выделялась бы вместе со стуктурой. А если же так, как приведено выше, то для contactName и contactNumber нужно дополнительно выделять память. Если Вам этот один char нужен, чтобы хранить в нём \0, то уж лучше инициализировать NULL'ом:
и в дальнейшем просто проверять значение полей на NULL. Интересно, как Вы это поняли... Память в куче выделяется гранулярно, специально так сделано. Размер "гранулы" может составлять 8 байт (как в Windows) или больше (16 байт - тоже вариант))))
Какое значение перед этим имели tempCont->contactName (абы какое, какое получилось после аллокации структуры?) и sizeOfString??? Просто так никто никого не выкидывает))) Если воспользоваться NULL-значениями, то можно сделать так:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||
|
|||||||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
возможно потому что менеджер памяти конкретного компилятора выделяем минимум 16 байт, чтобы избегать таких глупых выделений памяти по 1 байту со стороны программиста, проще выделить 16 байт, чем потом дефрагментировать память по 1 байту.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]()
|
| Правила форума "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. |