Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1090
от 28.08.2008, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 435, Экспертов: 27
В номере:Вопросов: 3, Ответов: 4

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 142027: Господа эксперты вопрос тому, кто знает ответ типа <u> "да будет" </u>, или <u> "не будет". </u>Будет ли работать в DOSBox (эмулятор DOS) в системе Linux простые приложения <b> написанные на CLIPPER, и в частности утилита dbu.exe...
Вопрос № 142033: на сайте http://faqs.org.ru/progr/c_cpp/cfaqrus2.htm нашел следующее: <div style="margin:5px; margin-top:5px"><div class="S"><b><font color="gray">© Цитата: </font></b></div><div style="padding: 10px; width:auto; font-size:12px; font-fam...
Вопрос № 142034: если для какой то переменной была динамически выделена память либо с помощью new,либо с помощью malloc,либо с помощью realloc и т.п. то может ли что-то страшное произойти, если попытаться освободить её более одного раза. т.е. 2 раза free ил и ...

Вопрос № 142.027
Господа эксперты вопрос тому, кто знает ответ типа "да будет" , или "не будет". Будет ли работать в DOSBox (эмулятор DOS) в системе Linux простые приложения написанные на CLIPPER, и в частности утилита dbu.exe?
LINUX меня не установлен, но есть большое количество приложений написаных на Clipper и С++, и мне надо решить для себя попробовать ли перейти ли на Linux или оставаться в Windows XP.
Спасибо за внимание!
Отправлен: 23.08.2008, 01:51
Вопрос задал: Третьяченко Александр Сергееич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dr_Andrew
Здравствуйте, Третьяченко Александр Сергееич!
Признаться, воспользовавшись Google, был поражён количеству программ для MS DOS с именем DBU...
Но если Вы имели в виду утилиту для работы с dbf-файлами (она, насколько я понимаю, написана именно на Clipper), то ответ однозначный: да .
Вот подтверждение:
Ответ отправил: Dr_Andrew (статус: Студент)
Ответ отправлен: 23.08.2008, 08:38
Оценка за ответ: 5

Отвечает: Fenixk19
Здравствуйте, Третьяченко Александр Сергееич!
Не знаю, что такое Clipper, но любое 16-битное приложение для систем DOS будет работать в DOSBox. Вы можете проверить свое приложение, воспользовавшисть досбоксом для windows. Заработает там, значит заработает и на линуксе. Если вам надо запустить 32-битное приложение, то здесь вам поможет wine(www.winehq.org). Но там могут возникнуть свои проблемы - wine не полностью совместим с windows, хотя с каждым выпуском совместимость повышается.
Ответ отправил: Fenixk19 (статус: 4-ый класс)
Ответ отправлен: 25.08.2008, 21:58
Оценка за ответ: 5
Комментарий оценки:
Спасибо очень интересный и полезный для меня ответ.


Вопрос № 142.033
на сайте http://faqs.org.ru/progr/c_cpp/cfaqrus2.htm нашел следующее:
© Цитата:
2.19 Могу я использовать void ** , чтобы передать функции по ссылке
обобщенный указатель?

О: Стандартного решения не существует, поскольку в С нет общего типа
указатель-на-указатель. void * выступает в роли обобщенного
указателя только потому, что автоматически осуществляются
преобразования в ту и другую сторону, когда встречаются разные типы
указателей. Эти преобразования не могут быть выполнены (истинный
тип указателя неизвестен), если осуществляется попытка косвенной
адресации, когда void ** указывает на что-то отличное от void *.


Я не совсем понял предложение
© Цитата:
Эти преобразования не могут быть выполнены (истинный
тип указателя неизвестен), если осуществляется попытка косвенной
адресации, когда void ** указывает на что-то отличное от void *.

Может вы мне разъясните?
Отправлен: 23.08.2008, 07:12
Вопрос задал: Warobushek (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Lang21
Здравствуйте, Warobushek!

Указатель - это, по существу, адрес объекта (или переменной), например int* - адрес, по которому хранится целое. Переменная типа void* - это адрес без указания типа ("указатель на нечто").

void** - это адрес адреса объекта любого типа. То есть, там, куда указывает void**, должен находиться адрес (т.е., переменная типа void*), а не что-то другое, что примерно и сказано в этом абзаце.
Ответ отправил: Lang21 (статус: Студент)
Ответ отправлен: 23.08.2008, 23:07


Вопрос № 142.034
если для какой то переменной была динамически выделена память либо с помощью new,либо с помощью malloc,либо с помощью realloc и т.п.
то может ли что-то страшное произойти, если попытаться освободить её более одного раза.
т.е. 2 раза free или delete
Отправлен: 23.08.2008, 07:39
Вопрос задал: Warobushek (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Dr_Andrew
Здравствуйте, Warobushek!
Если вызвать delete с недействительным указателем, то есть с тем, для которого не выделена память (в том числе тогда, когда память была ранее освобождена предыдущим вызовом delete), то в системе распределения памяти происходит сбой, что проявляется крахом приложения.
Подобная ошибка хода выполнения (run-time error) довольно часто встречается в программах на C++, если предыдущее освобождение памяти было скрыто где-то в недрах программы. Например, при использовании библиотеки Qt 3.x код ниже

Код:

TFindForm* pFindDialog = new TFindForm(this);
pFindDialog->show();
delete pFindDialog;


будет работать нормально, если в параметрах конструктора диалогового окна флаг WFlags установить ка к 0. Однако если его установить как Qt::WDestructiveClose (уничтожать диалоговое окно при его закрытии), то при выполнении вышеприведённого участка кода программа рухнет, т.к. оператор delete попытается уничтожить уже несуществующее окно.
Поэтому при использовании new - delete при вызове последнего рекомендуется использовать проверку на наличие объекта:

Код:

if(pFindDialog) delete pFindDialog;
Ответ отправил: Dr_Andrew (статус: Студент)
Ответ отправлен: 23.08.2008, 09:53
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое! В этом разделе сайта всегда самые здравые ответы.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.1 beta(win) от 11.08.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное