![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Нео |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Не пойму, в чем сожет быть проблема. Программирую под с++ .NET
Когда попробовал перекомпилировать под досовский djgpp, все пошло нормально. Но меня не устраивает работать под дос, к тому же привык к майкрософту. Вот собственно в чем проблема: функция класса Element: void Element::putin(int n,double d) { *In[n]=d; } In объявлено в классе как double **In, т.е. это массив указателей на double. В другой функции, которая вызывается до предыдущей: void Element::create() { ......... In=(double **)malloc(sizeof(double *)*NInSignal); ......... for(i=0;i<NInSignal;i++) { ......... d=new double; In[i]=d; } } Т.е. здесь происходит инициализация. NInSignal=2 в моем случае. Теперь вызываю ф-ю putin(0,какое-то число), все нормально, а если передать в функцию n=1, то при выполнении строки *In[n]=d; переменная *In[n] по прежнему остается=0, хотя d - ненулевое число. Т.е. проблема в том, что в эту переменную не заносятся значения при n!=0. |
|||
|
||||
| Plamenk |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 258 Регистрация: 18.2.2003 Репутация: нет Всего: 3 |
А на что ругается?
|
|||
|
||||
| Нео |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Да ни на что не ругается!
В том и проблема, что вроде все логически верно, а переменной не присваивается значение! |
|||
|
||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
первое что не нравится это
непонятно, что ты здесь делаешь. вероятно ты неправильно выделяешь память. если используешь new, то используй new. память под двумерный массив можно выделить например так:
и стоит не забывать в конце освободить память:
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| Нео |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Может, я действительно что-то не так делал, стоило по-другому организовать?
У меня In - массив указателей, объявлен как double **In. Я сначала выделял память для массива, Т.е. In[k] - k-й элемент-указатель массива. Теми двумя строками я выделял память под вещественную переменную и ее адрес засовывал в массив. И все это дело проделал в цикле. Добавлено @ 19:24 Проделал операцию по замене malloc на new, как мне посоветовал Rockie. Результат тот же самый. |
|||
|
||||
| Нео |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Проблема решилась сама собой, просто решил попробовать вывести значения переменной на экран, в результате все оказалось правильно. Как я понял, дело в отладчике. Я пользовался стандартным QuickWatch'ем. Как вижу, придется отбросить этот вариант. Как еще просматривать значения во время отладки? И еще, можно ли ускорить запуск программы с отладкой?
|
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
В каком смысле? Или в неумении им пользоваться -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| Нео |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 27.7.2006 Репутация: нет Всего: нет |
Поэтому я и спрашиваю, как еще можно просмотреть значения, т.к. еще не разобрался в отладчике, но остается факт, что QuickWatch неправильно работает, и причина в отладчике, а не во мне.
А насчет ускорения запуска - если запустить программу с отладкой, компьютер перед запуском секунд 5 ничего не делает, просто запускается консольное окно. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |