Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.08.2015, 00:19
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.08.2015, 02:33
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
vvm46, Cтандарт ISO/IEC 9899:201x 7.22.3 Memory managment function говорит (перевожу, ибо скопировать текст не могу, пропала такая функция): Если размер запрашиваемой области памяти равен нулю, поведение определяется реализацией: либо возвращается нулевой указатель, либо поведение соответствует запросу на выделение непустой области памяти, за исключением того, что возвращаемое значение не должно быть использовано для доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.08.2015, 02:37
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
Если реализация ведёт себя последним способом то становятся доступными операции реаллоцирования и освобождения памяти по вернувшемуся адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.08.2015, 18:13
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
Спасибо за разъяснения. Вот еще нашел, в продолжение. Почему размер пустого класса не нулевой? Ответ на сайте Bjarne Stroustrup http://www.stroustrup.com/bs_faq2.html Мой перевод: Чтобы убедиться, что адреса двух разных объектов будут разные. По той же причине, "новый" всегда возвращает указатели на различные объекты. Рассмотрим:: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Это интересное правило, которое говорит, что пустой базовый класс не должен быть представлен отдельным байтом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Эта оптимизация является безопасной и может быть наиболее полезной. Это позволяет программисту использовать пустые классы, представляющие собой очень простые понятия,без накладных расходов. Некоторые современные компиляторы предоставляют это : «оптимизацию пустых базовых классов". PS. Тут я воплотил код в программе и прокомментировал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2015, 03:18
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
vvm46, ну раз вы разобрались в проблеме, то 1)vvm46 По той же причине, "новый" всегда возвращает указатели на различные объекты имя оператора пожалуй не следовало переводить. 2) vvm46Это интересное правило, которое говорит, что пустой базовый класс не должен быть представлен отдельным байтом: непонятно что вы имеете ввиду. Объясните пожалуйста подробнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2015, 03:21
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
И вообще говоря было бы странно если бы оператор new возвращал одинаковые значения (кроме ex и ub). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2015, 22:33
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
SashaMercuryvvm46, ну раз вы разобрались в проблеме, то 1)vvm46 По той же причине, "новый" всегда возвращает указатели на различные объекты имя оператора пожалуй не следовало переводить. 2) vvm46Это интересное правило, которое говорит, что пустой базовый класс не должен быть представлен отдельным байтом: непонятно что вы имеете ввиду. Объясните пожалуйста подробнее Это не я имею в виду, а Bjarne Stroustrup: "There is an interesting rule that says that an empty base class need not be represented by a separate byte: Дальше код по тексту. " Вот ссылка на оригинал : http://www.stroustrup.com/bs_faq2.html#sizeof-empty Очевидно он имет в виду оптимизацию, я так понимаю. И при хорошей оптимизации указатель ссылающийся на пустой класс будет равен указателю на член унаследованного класса. То есть это не раздельные адресованные байты. А один и тот же адрес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2015, 22:49
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
SashaMercury, "имя оператора пожалуй не следовало переводить." Справедливое замечание. "new" в данном контексте следует так и читать: "new", так как это оператор. Кнопки "редактировать свой ответ" нет на форуме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.08.2015, 04:39
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
vvm46, изменять свои сообщения нельзя. Мне не понятно что это даёт, и о чём хотел сказать автор языка. Поясните кто-нибудь пожалуйста, для 'особо одаренных'. В чём собственно соль ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.08.2015, 04:40
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
SSvvm46, изменять свои сообщения нельзя. точнее 99,9 процентам пользователей нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.08.2015, 08:08
|
|||
|---|---|---|---|
malloc(0) |
|||
|
#18+
vvm46Спасибо за разъяснения. Вот еще нашел, в продолжение. Почему размер пустого класса не нулевой? Ответ на сайте Bjarne Stroustrup http://www.stroustrup.com/bs_faq2.html Мой перевод: Чтобы убедиться, что адреса двух разных объектов будут разные. По той же причине, "новый" всегда возвращает указатели на различные объекты. Рассмотрим:: Объясню проще. Из объектов любого типа можно сделать массив. Адреса соседних элементов массива различаются на размер объекта в памяти. Если этот размер нулевой, то два соседних элемента массива будут иметь один и тот же адрес, а это нарушение одного из главных принципов ООП -- объект в программе должен быть идентифицируем. Поэтому все правила формирования объектов добавляются в стандарте ещё одним правилом -- финальный размер объекта при любых наследованиях и упаковках должен быть больше нуля. При этом если есть пустой неполиморфный класс, размер его объекта будет 1 байт, если есть ещё и пустой его наследник, то размер наследника не будет 2 -- он будет всё равно 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.08.2015, 10:57
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
MasterZiv, Спасибо за разъяснения. Теперь понятно, почему указатели в коде примера получились равны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2015, 14:55
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
Здравствуйте. Илья, спасибо, частично мне понятно то о чём вы говорили. А разве может быть в других парадигмах программирования неоднозначная идентификация объекта ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2015, 15:07
|
|||
|---|---|---|---|
malloc(0) |
|||
|
#18+
SashaMercury А разве может быть в других парадигмах программирования неоднозначная идентификация объекта ? Нет. Вообще "объект" -- это в общем, что-то с чем программа оперирует. Она чтобы это делать должна уметь идентифицировать объект однозначно. В некоторых языках идентификатором является адрес в памяти, в других -- идентификатор в виртуальной памяти виртуальной машины, и т.п. Но в любом случае этот идентификатор должен быть. Тут говорилось мной об ООП только потому, что С++-- объектноориентированный язык прогр. и "объект" -- это из ООП. Но тем не менее в ООП независимо от С++ существует обязательное требование идентифицируемости объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.08.2015, 15:12
|
|||
|---|---|---|---|
|
|||
malloc(0) |
|||
|
#18+
MasterZivSashaMercury А разве может быть в других парадигмах программирования неоднозначная идентификация объекта ? Нет. Вообще "объект" -- это в общем, что-то с чем программа оперирует. Она чтобы это делать должна уметь идентифицировать объект однозначно. В некоторых языках идентификатором является адрес в памяти, в других -- идентификатор в виртуальной памяти виртуальной машины, и т.п. Но в любом случае этот идентификатор должен быть. Тут говорилось мной об ООП только потому, что С++-- объектноориентированный язык прогр. и "объект" -- это из ООП. Но тем не менее в ООП независимо от С++ существует обязательное требование идентифицируемости объектов. Это одно из требований образующих полноту теории ООП, вероятно. Спасибо C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2018880]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
3ms |
| others: | 13ms |
| total: | 169ms |

| 0 / 0 |
