|
MMU - сильно ли надо? |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 37)
|
May 12 2006, 09:08
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685

|
Цитата(aaarrr @ May 12 2006, 10:03)  Совершенно не нужен, если не планируется использовать Linux или WinCE. Linux, WinCE не нужен. Т.е., если будет подключена внешняя SDRAM, к примеру, то я смогу спокойно писать на С++ что-то типа: TMyArray* arr = new TMyArray(1000); ... delete arr; и всё будет спокойно выделяться во внешней памяти и освобождаться (при соответствующих настройках проекта)?
|
|
|
|
|
May 12 2006, 09:36
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685

|
Цитата(aaarrr @ May 12 2006, 10:36)  Да, для этого достаточно просто heap правильно прописать. Понял. Спасибо.
|
|
|
|
|
May 12 2006, 10:11
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dimchansky @ May 12 2006, 12:08)  Т.е., если будет подключена внешняя SDRAM, к примеру, то я смогу спокойно писать на С++ что-то типа: TMyArray* arr = new TMyArray(1000); ... delete arr; и всё будет спокойно выделяться во внешней памяти и освобождаться (при соответствующих настройках проекта)? Только учтите, что это 'счастье' до поры до времени, ведь никто не будет дефрагментировать память после Ваших фокусов с new/delete, да и сам new будет в случае нехватки памяти ждать ее до опупения....
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 12 2006, 10:30
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685

|
Цитата(zltigo @ May 12 2006, 11:11)  Только учтите, что это 'счастье' до поры до времени, ведь никто не будет дефрагментировать память после Ваших фокусов с new/delete, да и сам new будет в случае нехватки памяти ждать ее до опупения.... Как-то сразу об этом не подумал.. Т.е. в случае чего прийдется писать свой аллокатор для мелких объектов по типу, как у Александреску, или просто разумно использовать new.
|
|
|
|
|
May 12 2006, 10:59
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(zltigo @ May 12 2006, 14:11)  Только учтите, что это 'счастье' до поры до времени, ведь никто не будет дефрагментировать память после Ваших фокусов с new/delete, да и сам new будет в случае нехватки памяти ждать ее до опупения.... Если мне не изменяет память, то new/delete работают через стандартные аллокаторы, которые основаны на вызовах malloc/free, т.е. фрагментация памяти будет зависеть от того, как эти функции реализованы в стандартной библиотеке. Ну или на худой конец можно будет просто написать свои аллокаторы.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
May 12 2006, 11:38
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(makc @ May 12 2006, 13:59)  Если мне не изменяет память, то new/delete работают через стандартные аллокаторы, которые основаны на вызовах malloc/free Несомнено и с точки зрения дефрагментации использование malloc не лучше. А вот то, что из new не предусмотрен возврат в случае отсутствия памяти, это дополнительный прикол :-) Цитата Ну или на худой конец можно будет просто написать свои аллокаторы.  Слишком мало смайликов на мой взгляд добавлено.... И как быть в этом случае с бесполезностью MMU???
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 12 2006, 11:43
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685

|
Цитата(zltigo @ May 12 2006, 12:38)  Слишком мало смайликов на мой взгляд добавлено.... И как быть в этом случае с бесполезностью MMU??? Извините, что вмешиваюсь в интеллектуальную беседу.  А с MMU не было бы проблем c фрагментацией памяти?
|
|
|
|
|
May 12 2006, 11:59
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685

|
Цитата(zltigo @ May 12 2006, 12:52)  Без дефрагментатора - аналогичные. Но ведь дефрагментатор предлагалось писать? Ну и как без аппаратной поддержки реализовать "перемещение" памяти да так, что-бы тот, кто этой памятью пользуется не догадался об этом? Я просто не очень понял слова "бесполезностью MMU".. Просто я не до конца понимаю силу слов MMU. А без аппаратной поддержки перемещение, наверное, можно было бы софтово обеспечить: каждый класc в обязательном порядке наследуется от какого-нибудь THeapObject, который внутри себя хранил бы уже реальный указатель, число ссылок и т.п., а про new и указатели забываем совсем.
|
|
|
|
|
May 12 2006, 12:14
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(zltigo @ May 12 2006, 18:38)  А вот то, что из new не предусмотрен возврат в случае отсутствия памяти, это дополнительный прикол :-) Зато оно исключение кидает. Это в случае ПКшных (т.е. наиболее массовых) программ удобнее, чем проверять каждый раз возвращаемое значение. Для ембеддед, ессно, использовать стандартные аллокаторы, имхо, не самая хорошая идея, лучше уж написать свой простенький менеджер памяти на основе блоков фиксированного размера. Тут, по крайней мере, не сложно обеспечить предсказуемое поведение.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 12 2006, 12:18
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(zltigo @ May 12 2006, 15:38)  Цитата Ну или на худой конец можно будет просто написать свои аллокаторы.  Слишком мало смайликов на мой взгляд добавлено.... И как быть в этом случае с бесполезностью MMU??? MMU в этом случае может очень даже пригодиться, если хочется сделать "дефрагментации" малой кровью. Но если отказаться в рамках С++ от работы с указателями и управление динамической памятью сделать с помощью собственнаручно созданных аллокаторов (которые могут кроме всего прочего реализовывать прозрачную дефрагментацию и сборку мусора), то можно будет обойтись и без MMU.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
May 12 2006, 12:28
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685

|
Цитата(makc @ May 12 2006, 13:18)  MMU в этом случае может очень даже пригодиться, если хочется сделать "дефрагментации" малой кровью. А как будет в этом случае выглядет дефрагментация?
|
|
|
|
|
May 12 2006, 20:15
|
Участник

Группа: Свой
Сообщений: 55
Регистрация: 10-07-05
Пользователь №: 6 685

|
Цитата(makc @ May 12 2006, 15:43)  С помощью MMU можно реализовать непрерывное логическое адресное пространство из нескольких малых физических блоков памяти по разным физическим адресам. Т.е. произвести определяемую менеджером памяти (с функцией дефрагментации) трансляцию логических адресов в физические. Т.е., в приципе, можно и не производить дефрагментацию?
|
|
|
|
|
May 13 2006, 07:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(DASM @ May 13 2006, 06:37)  Zltigo - не пугайте людей. new в случае неуспеха вернет нулл. 1) "If unsuccessful, new returns zero or throws an exception" 2) " specified in the C++ standard, which is to throw a std::bad_alloc exception if the memory allocation fails" Господь с авторм приведенной Вами цитаты, но ни при каких условиях new не может возвращать NULL. В 'нормальном' варианте cо свопами и прочими наворотами просто циклится в ожидании появления памяти и в случае если и это не удается - система может просто прибить задачу. В мелких системах, где более-менее сразу ясно, что памяти скорее всего не появится - exeption. В самых примитивных реализациях - просто вечный цикл. Но никак не NULL'. Ну а то, что автору, цитаты, что NULL, что 'zero' все едино - еще раз указывает на его некомпетентность. Цитата(makc @ May 13 2006, 08:17)  В принципе да... Ага битик включил и "само работать будет" - не будет :-(. Это только механизм, которым можно воспользоваться в менеджере памяти для РЕАЛИЗАЦИИ компенсации фрагментированости.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 13 2006, 08:49
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(DASM @ May 13 2006, 11:04)  ну это я с переводом лопухнулся. По умолчанию генерируется исключение bad_alloc. Вызовом set_new_handler() мы можем назначить иное поведение. Это по Страуструпу. Ну уж если он некомпетентен.... С этим согласен. Если установить new_handler возвращающий NULL, то new() возвратит результат NULL. Вопросы: 1.Вы когда-нибудь его переустанавливали? 2.Мы обсуждаем поведение new() или того что МОЖНО сделать из new() установкой new_handler, перегрузкой или написанием макроса new ??? Цитата Вот из MSDN "If unsuccessful, new returns zero .... А вот на это "MS" ссылаться не надо. Из того, что у них в Windows на 32 разрядном x86 #define NULL 0 никоем образом не следует, то NULL являющийся абстрактным нулевым _указателем_ может всегда, везде и на всех платформах использоваться как попало и его физическое представление 0. Не говоря о том, что размеры указателя могут ОТЛИЧАТЬСЯ от разрядности ЧИСЛА. И в любом случае писать, что функция которая по определению возвращает УКАЗАТЕЛИ вернула не УКАЗАТЕЛЬ а число 0 (или три или любое другое) некорректно в принципе. Что касается путаницы и самой возможности использовать 0 как NULL, то за это отдельное спасибо авторам С, которые вместо отдельного ключевого слова для нулевого указателя типа паскалевского "nil" использовали ключевое слово "0" :-(. Потом ANSI выкрутились через макрос NULL, который всетаки был в С определен как УКАЗАТЕЛЬ.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 13 2006, 11:07
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(DASM @ May 13 2006, 13:34)  Приведите пожалуйста список, дабы я (а может и еще кто) никогда их (эти пакеты) не использовали Разбираться как ведет себя new() в конкретной библиотеке это задача того, кто решил его использовать. Я лично - не использую. Мне лет 15-17 назад хватило BCC, дабы отбить сие желание. Лет пять назад копался в ЧУЖОМ линуксовом приложении которое аккуратно периодически молча отстреливалось системой как зависшее. Догадались что там было? Ну и самое главное - чем Вам "exception" буде он реализован во EMBEDDED приложении сильно поможет? А? Типа "перезагрузимся и сделаем вид, что ни ничего не случилось".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 15 2006, 05:23
|
Местный
  
Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034

|
new() практически во всех ранних C++ компиллерах умел возращать NULL. Многие нынешние компиляторы/библиотеки поддерживают конструкцию: Код #include <new> ... T* p = new (std::nothrow) T; if(!p) { ... // не дали памяти гады! }
|
|
|
|
|
May 15 2006, 07:23
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Alex03 @ May 15 2006, 08:23)  умел возращать NULL .... Многие поддерживают конструкцию .... О чем и речь :-(, что кто-то, где-то, как-то... Посему, либо разбираться конкретно :-( и не забывать о повторных разборках при портировании, либо устанавливать свой new_handler(), причем единственным разумным вариантом new_handler() для embedded предстваляется возвращение им NULL для возможности максимально безболезненого выхода из каждого конкретной ситуации. Либо не использовать new() в принципе.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 4 2006, 07:56
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(zltigo @ May 13 2006, 11:49)  А вот на это "MS" ссылаться не надо. Из того, что у них в Windows на 32 разрядном x86 #define NULL 0 никоем образом не следует, то NULL являющийся абстрактным нулевым _указателем_ может всегда, везде и на всех платформах использоваться как попало и его физическое представление 0. А вот тут zltigo не прав. Цитирую Страуструпа: Цитата Ноль (0) имеет тип int. Благодаря стандартным преобразованиям, 0 можно использовать в качестве константы любого интегрального типа, типа с плавающей точокй, указателя или указателя на член класса. Тип нуля определяется по контексту. Ноль, как правило (но не всегда), будет физически представлен в виде последовательности нулевых битов соответствующей длины. Гарантируется, что нет объектов с нулевым адресом. Следовательно, указатель, равный нулю, можно интерпретировать как указатель, который ни на что не ссылается. В языке С было очень популярно определять макрос NULL для представления такого указателя. Так как в С++ типы проверяются более жестко, использование банального нуля вместо NULL приведет к меньшим проблемам. Если вы чувствуете, что просто обязаны определеить NULL, воспользуйтесь Код const int NULL = 0; Модификатор const предотвращает ненамеренное замещение NULL и гарантирует, что NULL можно использовать везде, где требуется константа. Так что ноль вполне законен и даже очень правилен. Кстати, IAR 4.30 после вызова new проверяет R0 на ноль и если не ноль вызывает конструктор. Глубже не копал, но интуитивно понял что new таки в случае неудачи возвращает ноль. Счас отловлю другие ошибки и попробую организовать нехватку памяти.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 4 2006, 08:26
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Сергей Борщ @ Aug 4 2006, 10:56)  А вот тут zltigo не прав. Цитирую Страуструпа: Это всего лишь личное мнение Страуструпа :-)))) который и затвердил :-( его в своей реализации ++. Я не слишком слежу за процессом стандартизации C++, но похоже комитет пока еще не родил стандарта :-(. В моей полной цитате речь шла о проблеме более широко: - не только по отношению к C++, но и к C (более того это был именно кусок по С ); - по отношению к разным платформам, как например должен выглядеть Страуструповский 0 на платформе типа Cray-Cyber с кольцевыми указателями? Короче в С++ болезнь вместо лечения ( введением ключевого слова, как в Паскале) была загнана вовнутрь наложением исскуственного требования иметь внутреннее представление нулевых указателей нулевым. И с легкостью необыкновенной считать, что ключевое слово для нулевого указателя это "0".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 4 2006, 09:12
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(zltigo @ Aug 4 2006, 15:26)  Цитата(Сергей Борщ @ Aug 4 2006, 10:56)  А вот тут zltigo не прав. Цитирую Страуструпа:
Это всего лишь личное мнение Страуструпа :-)))) который и затвердил :-( его в своей реализации ++. Личное мнение Страуструпа является стандартом - он автор.  Цитата(zltigo @ Aug 4 2006, 15:26)  Я не слишком слежу за процессом стандартизации C++, но похоже комитет пока еще не родил стандарта :-(. Стандарт давно принят - аж в 1998 году. Уже приличное время ходят обсуждения следующей версии. Цитата(zltigo @ Aug 4 2006, 15:26)  Короче в С++ болезнь вместо лечения ( введением ключевого слова, как в Паскале) была загнана вовнутрь наложением исскуственного требования иметь внутреннее представление нулевых указателей нулевым. И с легкостью необыкновенной считать, что ключевое слово для нулевого указателя это "0". Какая болезнь? Отказ от определения NULL, как (void*)0? Сказано же, что объектов по нулевому адресу быть не может, поэтому указатель с адресом 0 невалиден. И 0 вполне однозначно определяет ситуацию благодаря стандартному преобразованию типа. Зачем тут плодить лишние сущности языка?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 4 2006, 09:51
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(zltigo @ Aug 4 2006, 11:26)  В моей полной цитате речь шла о проблеме более широко: - не только по отношению к C++, но и к C (более того это был именно кусок по С ); - по отношению к разным платформам, как например должен выглядеть Страуструповский 0 на платформе типа Cray-Cyber с кольцевыми указателями? А разве в С есть operator new? Про Cray не знаю ничего кроме "Цыпленок Cray перебежит дорогу быстрее всех, но если перед стартом его не окунуть в жидкий азот, то на той стороне дороги он появится в уже зажаренном виде" :-) На другой платформе int 0 будет стандартно преобразован к принятому на той платформе битовому представлению указателя который никуда не указывает. По-моему так! (с) Винни-Пух.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 4 2006, 10:46
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(dxp @ Aug 4 2006, 12:12)  Какая болезнь? Отказ от определения NULL, как (void*)0? Нет, отсутствие ключевого слова для нулевого указателя. Цитата Сказано же, что объектов по нулевому адресу быть не может... Так папа сказал. Аминь. А нежели кому в железе чего такого захочется сотворить: Цитата На другой платформе int 0 будет стандартно преобразован к принятому на той платформе битовому представлению указателя который никуда не указывает. Ну не "int 0" а ключевое слово "0", которое выглядит как "0", но должно быть преобразовано к "принятому на той платформе битовому представлению"... И пусть со всем этим компилятор разбирается и не ошибается... И программист пусть не думает, поскольку за него компилятор постараетсяразобраться. Не по душе мне такой уровень абстракции :-(
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 4 2006, 12:07
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 5-07-05
Пользователь №: 6 553

|
Цитата(zltigo @ Aug 4 2006, 14:46)  Нет, отсутствие ключевого слова для нулевого указателя. Интересно, а физически что же из себя будет представлять это ключевое слово ? 0 или какое-нибудь 0xFFFF... ? Уровень языка (достаточно низкий) и подразумевает изпользование константы. И большое спасибо, а то бы получился очередной паскаль.
|
|
|
|
|
Aug 4 2006, 13:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Concorde @ Aug 4 2006, 15:07)  Интересно, а физически что же из себя будет представлять это ключевое слово ? 0 или какое-нибудь 0xFFFF... ? Какая разница какое( ну NIL ). Любое, главное не строились мутные на мой взгляд преобразования типа "ничего не возвратили" поскольку вообще-то оттуда возвращают указатели, то будем считать, что возвратили "никакой указатель" далее считаем, что по никакому указателю лежит "ничего" ну а дальше просто пусть это ничего будет "0" - так и запишем :-( Цитата И большое спасибо, а то бы получился очередной паскаль. Вы часом меня не за преверженца Паскаля да еще в его Борландовской реинкарнации приняли? Отвечу - нет, что отнюдь не заставляет меня априори его не признавать и не замечать его отдельные достоинства в части четкости выражения.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 4 2006, 13:51
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(zltigo @ Aug 4 2006, 17:46)  Цитата(dxp @ Aug 4 2006, 12:12)  Какая болезнь? Отказ от определения NULL, как (void*)0?
Нет, отсутствие ключевого слова для нулевого указателя. Если так хоцца слово, то Вы можете его сами себе сотворить по вкусу - Сергей Борщ приводил цитату, там как раз было именно это. Заодно снимаются вопросы о самом слове - какое хоцца, такое и используйте. Вполне гибко и демократично. А в языке слова нет просто потому, что оно реально не нужно. Это лишняя сущность. Язык С++ и без этого достаточно сложен и чрезвычайно перегружен, поэтому сделано по минимуму. Все логично. А для принципиальных любителей слов оставлена лазейка. "И овцы сыты, и волки целы" (с)  Цитата(zltigo @ Aug 4 2006, 17:46)  Цитата Сказано же, что объектов по нулевому адресу быть не может...
Так папа сказал. Аминь. Ну, если папа - Деннис Ричи, то да.  Цитата(zltigo @ Aug 4 2006, 17:46)  Цитата На другой платформе int 0 будет стандартно преобразован к принятому на той платформе битовому представлению указателя который никуда не указывает.
Ну не "int 0" а ключевое слово "0", которое выглядит как "0", но должно быть преобразовано к "принятому на той платформе битовому представлению"... И пусть со всем этим компилятор разбирается и не ошибается... И программист пусть не думает, поскольку за него компилятор постараетсяразобраться. Не по душе мне такой уровень абстракции :-( Мни кажется, что Вы все-таки излишне драматизируете ситуацию. Все там вполне однозначно. И физическое представление нулевого указателя вполне конкретно, просто оно определяется не Стандартом, а реализацией, только и всего, что опять же вполне логично. На всех платформах, с которым пришлось более-менее плотно поработать с С++, нулевой указатель имел физическое значение 0. Наличие специального ключевого слова совершенно ничего не меняет.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 4 2006, 16:45
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(dxp @ Aug 4 2006, 16:51)  А для принципиальных любителей слов оставлена лазейка. "И овцы сыты, и волки целы" (с)  И я ей пользуюсь :-) Ибо, как минимум, не люблю веспорядочно расскиданные по тексту "0" :-) А вообще сыр-бор с уходом в сторону от темы new() в тему NULL начался с моей фразы: Цитата Ну а то, что автору, цитаты, что NULL, что 'zero' все едино - еще раз указывает на его некомпетентность. При этом имелось ввиду отнюдь не способность компилятора разобраться в контексте, а покоробившее меня поминание именно "0" вместо "нулевого указателя" в качестве значения возврашаемого функцией для которой возврашаемым значением является указатель. Я понимаю, что в данной MS инструкции (а это именно четкая фраза от MS - можете поиском воспользоваться) указывается прямое действие пользователю - "пиши 0 и не парься", но тем не менее, подмена физической сущности в инструкции мне не нравится. Цитата Мни кажется, что Вы все-таки излишне драматизируете ситуацию. Да нет, так - шероховатость, просто это привлекло неожиданно для меня самого повышенное внимание и понеслось.... Цитата На всех платформах, с которым пришлось более-менее плотно поработать с С++, нулевой указатель имел физическое значение 0. Аналогично :-). Нынеживущие платформы наверное все такие. Ну а в будующем? Не знаю даже. Ведь всяких архитектур с ненулевыми нулевыми указателями и с указателями разных размеров для разных типов указателей было немало. Это было в эпоху, когда за счет архитектурных ухищрений добивались упрощения и/или увеличения производительности. Потом настали времена когда "патронов не жалеть" (в смысле транзисторов) и мегагерцы гнались легко. Сейчас лафа кончается - мегагерцы на исходе и пожалуй опять начнутся архитектурные гонки. И каким будет физическое представление нулевого указателя - это вопрос :-). Компиляторы конечно разберутся с "0" и в этом случае, но не красиво это как-то. Вот собственно пожалуй и все по теме "0" и "нулевой указатель" неожиданно вылезшей в теме по MMU.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|