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

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


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU
(Тестовый режим)

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

Выпуск № 44
от 20.02.2005, 18:20

Администратор:Калашников О.А.
В номере:Вопросов: 5, Ответов: 15


Вопрос № 17007
Уважаемые эксперты. У меня такая проблема. У меня есть (из комплекта borland c++) bcc и tlink, я немогу создать *.com файл. Вот такая ошибка
Invalid entry point. Что это означает я знаю, но как с эти справиться - НЕТ.
Вообще пишу ОС, и не хотелось бы возиься с PE при запуске. И если не трудно, может вы подскажете лучший вариант(в смысле интсрументов для разработки).
e-mail: linuxoid2003@mail.ru
Отправлен: 14.02.2005, 22:50
Вопрос задал: Filt (статус: Посетитель)
Всего ответов отправлено: 4

Отвечает: CrackLab
Здравствуйте, Filt!
Если хочешь, постучи в ICQ 29-29-29
Надо посмотреть что у тебя там за entry point. Скорее всего надо будет просто явно указать линкеру входную функцию. Заодно и поговорим про выбор среды для разработки.
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 15.02.2005, 00:16

Отвечает: Voituk Alexander
Здравствуйте, Filt!
Что-бы создать СОМ файл на всс, нужно в опциях выкусить библиотеку с плавающуей запятой и установить модель памяти TINY. COM файл состоит из одного сегмента, а плавающая запятая цепляет железно еще один. Поэтому линкер и не может создать СОМ файл. А если тебе интересно создавать такие вещи - возьми компилятор Zortech C++ 3.0 , он свободно это делает.
Ответ отправил: Voituk Alexander (статус: 2-ой класс)
Отправлен: 15.02.2005, 11:42

Отвечает: AxMAD
Здравствуйте, Filt!
Если вы пишите ОС то причём тут PE ~!
Для разработки ОС лучше всего использовать ассемблер, по крайней мере для написания ядра системы. Так же можно использовать C++ языка допустим которые включены в Linux, т.е. gcc и g++ и конечно компиляторы от Intel,Borland и т.д. ...
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 15.02.2005, 12:39

Отвечает: _vt
Здравствуйте, Filt!
Для разработки "ОС" ИМХО лучше использовать nasm или fasm, плюс компилятор gcc. Все три этих инструмента умеют создавать "плоские" 32-разрядные бинарники. Могу посоветовать почитать статьи с lowlevel.ru - там подробно описана методика написания ОС.

* EMan 2 beta: back in Black :)
Ответ отправил: _vt (статус: Академик)
Отправлен: 16.02.2005, 13:47


Вопрос № 17008
Создаем динамический массив. Работаем с ним. Удаляем.
Вопрос: как компилятор определяет сколько требуется удалить элементов?
Смотрел ассемблерный код, вроде получается, что разницы между delete <name> и
delete []<name> нет, но может я и ошибаюсь. Копался с дампом памяти - тоже ничего.
Может быть удаляется только ссылка на массив, а новые элементы потом просто поверх
старых пишутся. В ниже приведенном примере вроде бы так и происходит.
Все это делал в Borland C++ 3.1. Т.е. может это особенности компилятора?
Можно объяснить на примере другого компилятора.

Приложение:

Отправлен: 14.02.2005, 22:53
Вопрос задал: xaoc (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: CrackLab
Здравствуйте, xaoc!
При вызове оператора delete x, в обработчик этого оператора передается адрес x, т.е. адрес выделенной памяти, по которому непосредственно находится объект x. Внутри обработчика оператора delete, вызывается функция free, которой опять же передается адрес x в качестве параметра. Теперь сделаем отступление. При вызове оператора new вызывается функция HeapAlloc которая выделяет память, а также создает специальную стркутуру (memory block header) в которой хранится информация о выделенной памяти. Возвращаемся назад. Итак внутри обработчика оператора delete вызывается функция free, внутри которой в свою очередь вызывается функция HeapFree, которой передается адрес выделенной памяти (все тот же адрес х). Функция HeapFree имея этот адрес получает адрес соответствующей ему структуры memory block header (pHead), одним из членов которой является nDataSize, хранящий в себе размер выделенной памяти в байтах. Этот размер определяется и сохраняется в nDataSize при вызове функции HeapAlloc. < br> Таким образом функция HeapFree получает все необходимые данные (адрес выделенной памяти, ее размер и т.д.) из структуры memory block header, на основании чего и освобождает память. Надеюсь я объяснил подробно и главное понятно. Удачи.
Ответ отправил: CrackLab (статус: Студент)
Отправлен: 15.02.2005, 00:55

Отвечает: vitya
Здравствуйте, xaoc!
если тип простой - то да delete и delete [] работают одинаково. Если же у типа есть деструктор, то он вызывается.
Ответ отправил: vitya (статус: Профессор)
Отправлен: 15.02.2005, 10:09

Отвечает: Voituk Alexander
Здравствуйте, xaoc!
Все очень просто. Когда динамически выделяется память, в этом блоке памяти хранится служебная информация о размере выделенного блока. Более того - все выделенные блоки памяти (тобой или еще каким-нибудь другим приложением) связаны в общую цепочку в виде связанного списка по всему объему памяти. И память напоминает дефрагментированный массив. Поэтому при удалении известно сколько удалять. И при выделении новой памяти ищеться первый подходящий кусок свободной памяти. Ты выделил три байта и удалил. А потом выделяешь еще три. Он и попадает в то же место. А то что ты пишешь в скобках delete [4] - то это до фонаря. Ситема больше чем выделила не удалтит.
Ответ отправил: Voituk Alexander (статус: 2-ой класс)
Отправлен: 15.02.2005, 11:34


Вопрос № 17040
Получение MAC адреса компьютера по IP ?
как мне это сделать, только можно поподробней ....
заранее спасибо очень нужно ....
Отправлен: 15.02.2005, 15:48
Вопрос задал: Бойко Андрей Андреевич (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: vitya
Здравствуйте, Бойко Андрей Андреевич!
Боюсь, что это невозможно. Разве, что для собственного компьютера.
Ответ отправил: vitya (статус: Профессор)
Отправлен: 15.02.2005, 16:03

Отвечает: Voituk Alexander
Здравствуйте, Бойко Андрей Андреевич!
Смотри в Windows SDK Help

Приложение:

Ответ отправил: Voituk Alexander (статус: 2-ой класс)
Отправлен: 15.02.2005, 16:11

Отвечает: AxMAD
Здравствуйте, Бойко Андрей Андреевич!
Ниже приведён пример:

Приложение:

Ответ отправил: AxMAD (статус: Студент)
Отправлен: 16.02.2005, 20:11


Вопрос № 17041
КАк мне сделать консольный сервер для UDP чата ....
Заранее благодарен .....
Отправлен: 15.02.2005, 15:52
Вопрос задал: Бойко Андрей Андреевич (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: vitya
Здравствуйте, Бойко Андрей Андреевич!
1. Слушать соединения
2. Посылать всем сообщения
Ответ отправил: vitya (статус: Профессор)
Отправлен: 15.02.2005, 16:04

Отвечает: AxMAD
Здравствуйте, Бойко Андрей Андреевич!
Скорее всего лучше использовать сокеты!
www.realcoding.net
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 15.02.2005, 20:03


Вопрос № 17042
как правлено работать с INI , как храенить там свою конфигурацию проги ?
ПАСИБО :) всем кто ответил ....
Отправлен: 15.02.2005, 15:53
Вопрос задал: Бойко Андрей Андреевич (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: vitya
Здравствуйте, Бойко Андрей Андреевич!
С ини вообще работать не правильно. Но если уж приспичило тогда надо пользоваться функциями из серии GetPrivateProfile(тут идет тип). Кроме того есть классы, если поискать в интернете.
Ответ отправил: vitya (статус: Профессор)
Отправлен: 15.02.2005, 16:06

Отвечает: Voituk Alexander
Здравствуйте, Бойко Андрей Андреевич!
Смотря на чем пишешь. Если на Дельфине или на Билдере, то там есть стандартный класс TRegIniFile, или TIniFile. Окрываешь HELP и там все подробно написано с примерами.
Ответ отправил: Voituk Alexander (статус: 2-ой класс)
Отправлен: 15.02.2005, 16:16

Отвечает: AxMAD
Здравствуйте, Бойко Андрей Андреевич!
Смотрите соответствующию доку по API функциям:
GetPrivateProfileString,Write...
Ответ отправил: AxMAD (статус: Студент)
Отправлен: 15.02.2005, 20:04


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

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

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

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

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


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


© 2001-2005, Россия, Москва. Идея, дизайн, программирование: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное