Pull to refresh
4
0.1
Send message

И компилятор, который ничего не знает ни про какие ld-скрипты, вполне имеет право решить, что по этому адресу ничего нет.

Окей.

*((volatile int*)0x3) = 0xDEADBEEF

Теперь компилятор не имеет никаких прав и будет делать ровно то, что я прошу. А есть там какой объект проинициализированный или нет - это уже детали. Если есть - всё будет хорошо, это не UB и поведение нормальное. А вот если нет - то UB и результат непредсказуем. Но я подчеркну - в стандарте нет ни одного правила, запрещающего мне писать по любому адресу, какому захочу. Есть правила, говорящие, что если по этому адресу нет ничего валидного - беда-беда, но это не одно и то же.

Да гспди, загляните в HAL-библиотеку для STM32. Там всё в таком коде, пищущим по магическим адресам.

То и значит, что "где угодно". Как пример: я могу написать в любом TU int anything, потом написать ld-скрипт, который переменную с именем anything расположит ровно по адресу 0x3. И будет её всегда туда располагать.

Соответственно на старте программы и проинициализируется этот адрес. Он будет валидный и туда можно будет писать.

Здесь - нигде. Но в С++ он мог быт начат где угодно) Писать по вот таким рандомным адресам - обычное дело в embedded.

О, гспди. Я отвечал на комментарий, который просил привести пример неопределенного поведения. Я привёл такой пример и специально подчеркнул, что понятия не имею, какой будет результат, как бы намекая на то, что определение будет неопределённым.

Так что здесь мы наблюдаем свидетельство появление зануды, не умеющего читать между строк.

*((int*)0x3) = 0xDEADBEAF;

?
А объект там и не должен существовать. Это может система с физической адресацией, а адрес 0x3 - это захардкоженный адрес, который мапится на совершенно другое оборудование в системе (не RAM), которое способно понять, что такое 0xDEADBEEF.

А я думаю будет 0 :) Потому по логике операция вычитания указателей должна дать количество элементов типа T, которые поместятся между двумя адресами.

Что касательно писать в 0х3 - нет ни одного правила в стандарте, запрещающего мне это сделать.

Как на счёт вычитание указателей на память, выравненную по разным границам?

Условно:

auto diff = ((int*)0x4) - ((int*)0x3).

Я пишу на С++ уже 9 лет, но понятия не имею, какой будет результат

Речь, скорее шла о том, что С++ специфичных вещей тут довольно мало, и на самом деле здесь максимум расписан Си с классами. Да, если честно, даже и он не расписан. С++ раз эдак в 50 более объемный язык. Как синтаксически, так и... ну скажем "исторически", в плане костылей.

Но в целом статья сразу предупреждает, что она не для того, чтобы выучить (и упаси боже понять) С++, а для того чтобы тупо сессию сдать. В этом смысле сойдёт, хотя я по диагонали проглядел

И тому есть куча исторических предпосылок. В тех странах, которые пропагандируют абсолютно те же самые ценности, что и богатая страна, как-то вот всё равно не очень богато, а сопоставимо. Вопрос - имеет ли вообще идеология какой-то смысл?

Если зарабатывание денег происходит за счёт удовлетворения потребностей людей, то я не вижу ничего несправедливого здесь.

К сожалению, зарабатывание денег чаще происходит через продажу конфет из фекалий в красивой упаковочке, а не через удовлетворение потребностей. Маркетологи эксплуатируют баги в человеческом сознании, а также тот факт, что человек не может знать всё, чтобы продать ему хрень, вместо товара. Одинакого плохие автомобили, чипованные принтеры, смартфоны устаревающие за два года, запреты на ремонт, молоко в такре 943 мл и прочее - прекрасное тому подтверждение.

Держи людей малообразованными, не воспитывай в них способность критически мыслить, не давай им возможности взглянуть на всю систему целиком, показывай только красочные картинки - и ты сможешь продавать им любую ненужную хрень.

Напомните, статья за тунеядство где была?

В СССР, но, во-первых, я и не говорил, что надо возрождать СССР как он был, а во-вторых, что это доказывает?

…которые удовлетворяют интересы миллионов.

...забывая об интересах миллиардов тех, кто беден, болен, необразован и вообще существует, а не живёт. Хуже того, с каждой итерацией, с каждым кризисом - разрыв между богатыми и бедными всё больше и больше.

Но это так, извините, я просто не считаю науками в полноценном смысле то, что сейчас называют социальными науками.

Назовём это не науками, а социальными эвристиками. Продаваны и социологи могут не строить фундаментальных точных теорий, по которым можно что-то предсказывать, но тем не менее вполне себе манипулировать человеческим поведением опираясь на имеющиеся данные. С учётом всё более жесткой слежки за каждым кликом, за каждым взглядом, за каждым местом прогулки - все эти эвристики становятся всё точнее и точнее.

Каким образом?

Боюсь, я не готов ответить внятно на этот вопрос сейчас, потому как тут надо садиться, брать каждую из проблем, которая привела к экономическому упадку СССР и рассматривать её по отдельности.

мне (и подавляющему большинству других людей) просто лень работать, если мои усилия не влияют значимо на доступные мне ништяки.

[offtop]
Боюсь у вас неправильное представление о том, кто есть представители "подавляющего большинства", и насколько иное у них отношение к работе.
[/offtop]

В целом, это и есть ключевая проблема. У меня нет внятного ответа на этот вопрос.

Китай вроде вполне себе живее всех живых.

Все остальные, за исключением КНДР, уже давно капиталистические. Лучше-то им не стало. Странно, не правда ли?

Не стоит опять забывать, что у идеи социализма был очень сильный враг в виде блока НАТО, который как бы никуда не пропал после распада СССР, а даже наоборот только больше распустил руки с момента, как СССР сломался.

В мире осталось штук 5 коммунистических стран. Что-то никто из оставшихся не стремится в светлое капиталистическое будущее. Одна из этих стран (Китай) даже более или менее процветает. Не сходится.

Фактически пересказал сюжет недавно вышедшей stray)

А какова стоимость жилья какая? Расходы на еду и бензин? А образование для детей? А медицинское обслуживание? А работает американец или человек из более бедной страны, чей труд нагло эксплуатируют, ведь положение в его стране полный швах?

Но даже если мы всё это отбросим - это по сути одна, ну скажем из десятка богатых стран. В остальных почти двухста дела явно похуже. Почему?

Но как это возможно в современных реалиях?

Моя не понимать. Где тут эволюция и почему вдруг третья артерия должна стать повсеместной? По моей логике, чтобы третья артерия стала повсеместной, должны вдруг, по какой-то причине, начать умирать те, у кого этой артерии нет. Но почему они вдруг начнут умирать?

А если они не будут умирать, тогда у большинства по-прежнему не будет нужного гена и потому призрак так и останется отклонением от нормы

Я боюсь разводить этот холивар на хабре. Аудитория здесь не слишком терпима, к сожалению.

Так что отвечу на вопрос общо. Я считаю, что целевая функция капитализма - зарабатывание денег - не является полезной для общества в целом, потому что приводит к крайне неравномерному, но главное, несправедливому распределению благ, эксплуатации труда многих тысяч, ради интересов пары десятков людей.

Схема, которую строил СССР - не работала. Я всё еще считаю, что это проблемы реализации, а не самой идеи. Сегодняшие технологии, развитие социальных наук и возможности по построению обратной связи от общества вполне могли бы решить нерешаемые 50 лет назад проблемы с планированием производства и контролем за процессами.

Сегодня я лично не вижу никаких предпосылок к переменам. И я думаю я еще даже умру при капитализме. Причем дальше - тем будет жестче жизнь следующих поколений. Тем не менее я искренее верю, капитализм - это тупик, в который всё человечество придёт, а куда оно развёрнется потом - загадка.

Нет такой вещи как "здоровая конкуренция". В реальном мире капиталисты нарушают законы, заносят взятки, думаю иногда даже убивают людей. Вследствие чего образуются монополии, которые существуют подолгу. Ты будешь страдать лет 20, прежде чем государство сделаеть хоть что-нибудь с этим. Еще и не факт, что сделает что-нибудь полезное.

Information

Rating
3,012-th
Registered
Activity