| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Порядок объявления переменных |
| Автор: AntonChik 6.10.2007, 14:05 | ||||||
извиняюсь если спрашиваю какую-то глупость (убейте, поиском не воспользовался), но вот стало интересно почему если в рабочем коде :
объявить **b после z и n, т.е. вот так
то в строке
вылетает access violation ???! |
| Автор: volvo877 6.10.2007, 14:18 |
Ты считаешь, что он действительно рабочий? А память, прости, под массив b, ты где выделяешь? |
| Автор: AntonChik 6.10.2007, 14:39 | ||||
я не считаю, я поимел смелость лично в этом убедиться, продемонстрировав себе успешную компиляцию, запуск приложения и произведя действия, ведущие к вызову данного кода... а вот память под очередной элемент массива b я выделаю вот здесь:
или здесь происходит нечто другое?))) |
| Автор: Alexeis 6.10.2007, 14:48 |
| TButton **b; это указатель на указатель, т.е. сначала нужно выделить память под массив указателей, а затем уж под каждый объект. |
| Автор: AntonChik 6.10.2007, 15:09 |
| ок. знаю и верю. почему тогда работает первый код? кнопочки успешно создаются и даже щелкаются(!) |
| Автор: zkv 6.10.2007, 15:18 | ||
не должен работать. Либо не все показал, либо это упущение Билдера, если он такие ошибки пропускает. |
| Автор: Alexeis 6.10.2007, 15:21 |
| zkv, если переменная неинециализирована, то там может быть допустимый адрес где-то в выделенной памяти. |
| Автор: Fazil6 6.10.2007, 15:38 | ||||||
|