Тред, посвященный прародителю всех С-подобных языков и по совместитель

ibaka.ru
жалоба / abuse: admin@ibaka.ru
Источник / Source: https://2ch.hk/pr/res/1807650.html
  Статус треда: АКТИВНЫЙ (обновить)  

ссылка, указатель, нужен, ссылке, равно, тред, проверку, писать, читать, адресу, функции, ссылки, стандарт, работает, код


#1807650

this is the image
3760.jpg 2000✘2610,1965Кб

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

Пожалуйста, пользуйтесь https://ideone.com/ https://wandbox.org/ или https://pastebin.com/ для вставки кода, если он длиной больше нескольких строк или содержит [​i​] или ∗.

Что читать:

- Brian Kernighan, Dennis Ritchie "The C Programming Language": http://www.cypress.com/file/56651/download
- Stephen Prata "C Primer Plus, 6th Edition" (2014): относительно свежая, знает про C89/C99/C11, описывает различия, объемная (около тысячи страниц), годная, с вопросами, упражнениями и ответами. Читать после K&R или до.
- Zed A. Shaw "Learn C the Hard Way" (2015): годное пособие для гуманитариев для гуманитариев!
- Немного примеров хорошего стиля: http://www.oualline.com/books.free/style/index.html
- ООП, например: http://www.cs.rit.edu/ ~ats/books/ooc.pdf
- Стандарт ISO/IEC 9899:1999 (C99): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (драфт)
- Стандарт ISO/IEC 9899:2011 (C11): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf (драфт)
- Черновик стандарта ISO/IEC 9899:202x (C2x): http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2479.pdf (февраль 2020, с диффами)

Чем компилировать:

- Очевидный GCC.
- clang: оче годно, батя рекомендует.
- Intel C Compiler: оптимизации, тысячи их.
- Visual Studio Community Edition: внезапно этим стало можно пользоваться, особенно с тулсетом clang/C2. Поддержка C11 на уровне "есть все, что тебе понадобится в реальном проекте плюс кривая библиотека". Анализатор кода в комплекте.
- Pelles C (шиндоуз онли): поучиться, вкатиться в C11 (стандарт полностью реализован, имеются в том числе threads.h и прочие stdatomic.h), но количество багов в оптимизаторе и редкие апдейты напрочь отбивают желание собирать этим что-то сколько-нибудь серьезное.
- TCC: очень маленький компилятор с багами и поддержкой C99. С ключом -run умеет компилировать код в память и запускать его, что позволяет писать скрипты прямо на сишечке.

Что еще почитать:

http://c-faq.com/
FAQ из comp.lang.c. Древний, но все еще актуален.

Samuel P. Harbison, Guy L. Steele Jr. "C: A Reference Manual, 5th Edition" (2002)
Ебаный пересказ стандартов C89 и C99 (включая стандартную библиотеку). Для не осиливающих стандарт в оригинале. Читать в качестве подготовки к собеседованиям (есть задачник с ответами) и для ознакомления с масштабами пиздеца перед написанием своего парсера/компилера.

Peter Van Der Linden "Expert C Programming. Deep C Secrets" (1994)
"Си: грязные истории". Смехуечки, немного объяснений, чем обусловлены особенности языка, всем известные подводные камни кто там ругал косяки в JS? у нас в сишечке их гораздо больше, просто они лучше спрятаны, немного байтоебли и непонятно откуда взявшаяся глава про старинные плюсы. Читать в качестве сказки на ночь (на пару вечеров хватит).

Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management" (2013) - почитать, вкатиться в указатели.

Ben Klemens "21st Century C: C Tips from the New School" (2012)

Paul Deitel, Harvey Deitel "C for Programmers with an Introduction to C11" (2013)

Stephen G. Koch@n "Programming in C (3rd Edition или 4th Edition, если найдется)" (2014)

MISRA Ltd. "Guidelines for the Use of the C Language in Critical Systems" (2013)
Набор рекомендаций по написанию надежного кода на C (промышленный стандарт). Читать - однозначно, следовать - вдумчиво и без фанатизма. Также можно посмотреть https://www.securecoding.cert.org/confluence/display/c/SEI CERT C Coding Standard и http://web.archive.org/web/20190213011655/homepages.inf.ed.ac.uk/dts/pm/Papers/nasa-c-style.pdf

Еще более длинный список: http://www.iso-9899.info/wiki/Books#Learning_C

https://github.com/kozross/awesome-c

Онлайн-утилиты:

- https://godbolt.org/ - Compiler Explorer позволяет посмотреть выхлоп компиляторов для введенного куска кода (больше полусотни разных версий компиляторов).
- http://cdecl.org/ - С Gibberish ↔ English помогает читать сложные сишные декларации.

Прошлые треды:

- №59: http://arhivach.ng/thread/597021/
- №60: http://arhivach.ng/thread/610540/
- №61: http://arhivach.ng/thread/610541/ >>1786992


#1807713

Первый


#1807739

>>1807650
Фтарой


#1808052

>>1807739
Попрошу не засорять тред ненужными сообщениями.


#1808054

this is the image
2940.png 1080✘1920,238Кб

>>1807650


#1808057

this is the image
2950.png 1080✘1920,347Кб

>>1808054


#1808433

>>1808054
Плюс ещё на уровне стандарта запретить использование скобок в логических выражениях.


#1808460

>>1808054
Шутки шутками, а nullptr и так скорее всего будет в C2x в рамках восстановления совместимости с крестами.


#1808465

>>1808460
Ненужен.
#define NULL ((void звезда)0)


#1808785

>>1808465
nullptr будет корректно проверятся с указателем, а с переменной будет падать на компиляции. Макрос подобной гибкости обеспечить не может.


#1808878

Помогите ньюфагу, операции с плавающей точкой - операции не над целыми числами, или что?


#1808899

>>1808878
Наоборот, над нецелыми. А откуда такой вопрос?


#1808900

>>1808899
Мне нужно реализовать поиск тригонометрических функций без использования операций с плавающей точкой. Хотел просто синусами, косинусами сделать, но похоже нужен какой-то алгоритм.


#1808901

>>1808900
Что реализовать?


#1808902

>>1808878
Хз что там у тебя за задание, но плавающую точку всегда можно заменить фиксированной, т.е. парой целых, или рациональными числами числитель/знаменатель.


#1808904

>>1808901
Операции sin, cos, tg, ctg чисел.


#1808905

>>1808900
>Мне нужно реализовать поиск тригонометрических функций без использования операций с плавающей точкой.

Значение COS и SIN это нецелое число в диапазоне от -1 до 1.
Как его можно целым числом записать?
Ну в теориии то извратиться можно, но если ты не знаешь что такое IEEE 754, то очевидно что ты не тот человек, который может сегодня извратиться.


#1808907

this is the image
5200.jpg 600✘898,110Кб

>>1808905
Умножив на 1000000


#1808912

>>1808907
>Умножив на 1000000
Nice. Но это половина решения.


#1808940

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


#1809016

>>1808940
А чего бы не взять таблицу Брадиса за основу? Забить её в массив и наслаждаться погрешностью.


#1809111

>>1808940
Ох лол, настоящий инженер


#1809189

>>1808940
Что вообще значит "не используя числа с плавающей запятой"? Где ты результат хранить собираешься? Сформулируй задание как можно точнее.


#1809383

>>1808900
Используй CORDIC или таблицы с представлением fixed point.


#1809392

Нужна помощь с программированием на C
Постараюсь норм заплатить за это, но уровень знаний нужен неплохой.
Напишите сюда, пожалуйста @twoomer


#1809446

>>1809392
Ты в универе на второй год остался?


#1809452

>>1809392
>Постараюсь норм заплатить за это
Это сколько?


#1809492

>>1809446
ой, ты меня помнишь, эхе.
>>1809452
стукни в телегу, с тебя не убудет


#1809668

>>1807650
Ещё могу подкинуть такую книжку:

http://buildyourownlisp.com/

Учишь Си путём написания своего Лиспа.


#1809685

Совсем недавно начал изучать C.
Читаю книгу, заглядываю в стандарт, много гуглю, пытаюсь ковырять разные исходники простых утилит.
И, конечно, вместе с этим решаю и пытаюсь решать различные упражнения, практические задания.
Не скажу, что всё идёт как по маслу, но настроен серьёзно, не планирую сдаваться.
На фоне всего этого почти всё время, которое провожу сейчас за компьютером, трачу на такое самообучение в одиночестве.
И как-то ощущается: нехватка живого общения по теме программирования на C и недостаток возможности обсуждать то, что с ним (C-программированием) связано.
Не поймите превратно, я не имею вообще ничего против C-тредов (пару раз успел получить дельные советы тут), но часто на самом деле как-то не хватает именно живого общения по теме. (посмотрел конфы в телеге, xmpp, но путного ничего не нашёл)

Ещё есть желание найти собеседников в первую очередь из числа тех, кто тоже серьёзно заинтересован в обучении программированию на C.
Может быть получится как-то иногда помогать друг другу, пробовать вместе разрешить ту или иную особо сложную "задачку", обсуждать что-то по теме.

Всё вышеуказанное побудило создать сегодня дискорд-сервер. Надеюсь, что кто-нибудь откликнется и присоединится.
Создал буквально пару часов назад, поэтому на первых порах сразу после входа будут открыты: голосовой канал и 2 текстовых (general и no-microphone).
Ссылку в форме картинки оставил тут: https://2ch.hk/ch/res/161664.html

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


#1809767

>>1809685
Пашол нахуй социоблядок.


#1809769

>>1809668
А нет книжки на СИ по написанию своего Хаскеля?


#1809777

>>1809769
Тебе никакая книга не поможет, если ты не понимаешь как работает компилятор, транслятор, сборщик мусора и так далее.


#1809781

>>1809777
Душный трипл.


#1809786

>>1809781
Трипл хуйни не скажет. Он тебе всё верно написал. Как ты будешь компилировать свой хаскел? Синтаксис уже придумал? Парадигму используемую для программирования? Как это все будет транслироваться в байт код/виртуальную машину/ассемблерное представление? Или это будет транслироваться на кресты?

Не толсти толстый школьник-зумерок.


#1809794

>>1809769
>книжки на СИ
Содомит.


#1809796

>>1809794
Это ты ещё книги на с не видел
https://www.livelib.ru/book/92238/readpart-krov-elektricheskaya-kendzi-siratori/ ~3


#1809811

>>1809786
Чел, ты вообще не выкупаешь. Перечитай на что я отвечал.


#1809816

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

Ладно, для завтравки - кто пользует операцию "запятая" в Си. Уверен что начинающие программеры и не слышали о такой.


#1809820

>>1809816
>операцию
оператор


#1809834

>>1809816
Да тут и про оператор "стремиться к" не слышали.

#define as ;while

do printf("n is %d\n", n) as ( n --> 0);


#1809854

>>1809834
А вот тут уже у меня глаза на лоб полезли. Ты точно не троллишь?
Если что, пишу на Си с 1993 года.


#1809864

this is the image
5000.png 1194✘502,49Кб

>>1809854
Ни в коем разе.


#1809866

>>1809767

Как-то ты грубо написал (без необходимости в этом). И сажа совсем неуместна.
Будь добрее что ли.


#1809874

>>1809864
В какой версии стандарта появилось?


#1809875

>>1809864

#define begin {
#define end }


#1809883

>>1809874
Стандартошизик на месте, я спокоен.
Главно что в компиляторах работает.


#1809886

>>1809883
Нельзя быть таким ебанутым, как ты. Кроссплатформенное приложение писал хоть раз? Наверняка же нет.


#1809888

>>1809886
Откуда у Си кроссплатформенность, лул? Это же не джава.


#1809889

>>1809816
Палю годноту
https://habr.com/ru/post/435872/


#1809894

>>1809874
Вообще это древняя фишка, видел чуть ли не в исходниках линукса.


#1809897

>>1809888
Вот когда ядро ОС на Java напишут, тогда приходи. Java без виртуальной машины не работает. Виртуальная машина Java работает поверх ОС.

Sun Microsystems как раз и сдох? когда решил заебощить Java CPU/


#1809915

>>1809889
Швабропетух, уходи


#1809919

>>1809915
Хорошо
https://www.youtube.com/watch?v=wM8vz_UPTE0


#1809932

>>1809897
При чем тут ядро ОС.? У меня есть обычные программы на Java и я этим калом пользуют только сдерживая рвоту от безысходности отсутствия альтернатив. Если бы весь софт был на Java я бы просто повесился или отказался от использования компьютеров, потому что моя психика дороже.


#1809935

>>1809932
>У меня есть обычные программы на Java
Зачем так жить? Ну C# ещё как-то можно понять и простить, но Java?


#1809949

>>1808460
Я бы ещё от ссылочек, как в плюсах, не отказался бы.


#1809970

>>1809949
Ненужны, это как var в паскале, который внезапно оказывается указателем, хотя таковым не выглядит.


#1810024

>>1809919
pub fn
Не, ну это пиздец конечно


#1810047

>>1809970
Ссылка является частным случаем указателя. Когда передаешь объект в параметр функции, то передаешь его по ссылке. Использование ссылок в этом случае отменяет проверку на валидность указателя. Почему? Т.к ссылка указывает на существующий объект. Будешь брать ссылку из голого nullptr - получишь ошибку на этапе компиляции.


#1810049

int main(void){
char *str = "Hi!";
return 0;
}

сохраняю, например, в файле hi.c
Затем в терминале выполняю команду: gcc -nostdlib -o hi hi.c
В ответ, конечно, получаю предупреждение /usr/bin/ld: warning: cannot find entry symbol _start; ...

Но почему после этого исполняемый файл hi всё равно весит примерно 13 килобайт?


#1810056

>>1810049
>Но почему после этого исполняемый файл hi всё равно весит примерно 13 килобайт?

strip hi

Но сначала лучше прочти вот это - https://www.thegeekstuff.com/2012/09/objdump-examples
И посмотри сам.


#1810065

>>1810049
Вангую отладочные символы внутри. Можно strip'ом воспользоваться.
Строки поубирает. Можешь попробовать флагами gcc убрать отладочные символы опцией -g0, но вряд ли оно прям все вырежет


#1810066

>>1810049
А чего ты хочешь добиться?


#1810082

>>1810065

strip и g0 не помогают.

>>1810066
Для начала того, чтобы линкер не подрубал посторонние библиотеки, если уж я использую опцию nostdlib.


#1810114

>>1810082
У strip есть ключи. Можно хорошо порезать.

Выше же ссылка на ключи objdump. Это 100% ответ на твой вопрос.


#1810117

>>1810082
>nostdlib

попробуй ещё nostdinc - в инклудах докуя чего может прицепится.


#1810124

>>1810082
Если так интересно, можешь ознакомиться со статьей: https://habr.com/ru/post/88101/
Мне всё-таки интересно, куда тебе размер уменьшать-то?
Может другой компилятор попробовать стоит или поиграться с оптимизацией (только что в этом коде оптимизировать..., нужно рассматривать примеры побольше)? То смотри и поменьше размера добъёшься.


#1810127

>>1810047
При наличии ссылок по коду х=1 трудно определить, меняется тут аргумент или параметр за пределами функции.


#1810138

>>1810124
глянул на статью, вот цитата оттуда:
"...Использоваться будут только явно переданные линкеру файлы».

jesstess@kid-charlemagne:~/c$ gcc -nostdlib -o hello hello.c
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 00000000004000e8

Всего лишь предупреждение, все равно попробуем:

jesstess@kid-charlemagne:~/c$ wc -c hello
1329 hello

Выглядит неплохо! Мы уменьшили размер до значительно более вменяемого (аж на целый порядок!)&hellip";

Тут >>1810049 абсолютно идентичная команда выполняется "gcc -nostdlib -o hi hi.c" Но размер исполняемого файла не уменьшается, как это происходит в статье.


#1810147

>>1810056
>>1810114

Плохо знаком с objdump, но судя по тому, что именно он выводит, причина тяжеловесности исполнительного файла вроде в ld-linux-x86-64.so.2


#1810158

>>1810147
Поиграйся ключами - получишь массу информации. Он даже дизассемблирует.


#1810177

>>1810127
Обсуждалась не передача обычных типов, а конкретно объектов. С теми же самыми структурами в Си приходится работать? - Приходится. Производится проверка на передаваемый указатель на структуру: эквивалентен ли полученный указатель NULL-у? Понятное дело, что такого рода проверка нужна для избежания ошибки сегментирования. При ссылке не пришлось бы этого делать, код стал бы занимать меньше места (ещё 1 в пользу ссылки).

Ранее упоминалось, что ссылка - частный случай указателя. Значит при изменении значения внутри функции передаваемой по ссылке переменной, значение вне функции будет также меняться.


#1810179

>>1810049
Куски ELF выравниваются на страницу, чтобы его удобней мапить в память. Заголовок будет минимум страница. Дальнейшее зависит от кунпелятора и архитектуры.
clang -m32 даст файл чуть больше страницы.


#1810194

>>1807650
Няши, напомните, каков сейчас максимальный сегмент данных в исполняемом файле? Указатель 64?


#1810210

this is the image
6560.png 1582✘543,71Кб

>>1810177
Ты лепишь какую то фигню. Ничего никакие ссылки не проверяют.


#1810226

>>1809392
Извините - бамп


#1810238

>>1810226
Что такое неплохой уровень знаний? Надо уметь писать свои ОС или Гугол?


#1810240

>>1810238
Напиши - ничего страшного не случится.
Скажем так, я студент раздолб.


#1810241

>>1810240
Что написать? Свою ОС или Гугол?


#1810243

>>1810241
Консольную программу :)


#1810263

>>1810210
Ты разыменовываешь nullptr и передаешь его, естественно будет неудачное завершение программы. Я говорил о другом.
Допустим у тебя есть структура, тебе её нужно передать в функцию.
Если ты передаешь по указателю, то тебе придётся делать проверку на nullptr (для устойчивости функции), если ты делаешь проверку по ссылке - проверку такого плана делать не придётся. В твоём случае ссылка верна - компилятор не ругается, но ссылка указывает на неинициализированный объект, поэтому обратиться к полям объекта не получится, в следствие чего ловим ошибку сегментирования. Всё правильно я сказал, подумай сначала, перед тем, как что-то писать.


#1810273

>>1810263
Не "проверку по ссылке", а "передачу по ссылке". Опечатку допустил.


#1810282

this is the image
7510.png 1016✘459,73Кб

>>1810210
Ознакомься, будь добр, ещё с этим отрывком. Основные мысли выделил, чтоб не сбить тебя с толку.


#1810284

>>1810263
>Если ты передаешь по указателю, то тебе придётся делать проверку на nullptr (для устойчивости функции)
Я тебе показал что в случае с ссылкой то же самое - я спокойно передал nullptr, значит тебе надо делать ровно такую же проверку.
> обратиться к полям объекта не получится, в следствие чего ловим ошибку сегментирования.
Опять же я тебе показал что программа обратилась к неинициализированному полю без всяких ошибок сегментации.


#1810285

>>1810284
Ссылка указывает на указатель, в то время как указатель указывает на неинициализированный объект. Этого объекта в памяти нет. Какое-либо изменение, обращение к объекту приведет к ошибке сегментирования.
Ты сломал логику иным путем, а вот теперь попробуй передать ссылкой невалидный указатель напрямую. Так не получится.


#1810293

>>1810285
Я тебе уже все показал. Я разыменовал nullptr прямо перед ебалом компилятора и он никак не среагировал. Nullptr никак тебя не защитит. Если ты напишешь свою библиотеку которая в функциях принимает ссылки, ей точно так же смогут передать указатель. Поэтому тебе все равно придется проверять на NULL если ты печешься о "непадучести".


#1810303

>>1810285
> Ссылка указывает на указатель
Ссылка на разыменование указателя тождественна этому указателю. Указатель может быть 0. Эрго, можно передать 0 в качестве ссылки. Шах и мат.


#1810355

>>1809794
>> книжки на СИ
> Содомит.
Книжка "A Retargetable C Compiler" написана на Си. Но она, конечно, не про хаскель.

>>1809834
> "стремиться к" не слышали
Мы даже про головастиков слышали. Которые ~-~-n и -~-~n.


#1810360

>>1810303
Да, это так.
Компилятор не может проверить адрес объекта. Вся защита ссылок от того чтобы они не были nullptr - проверки типов чтобы ты не мог вместо ссылки присвоить nullptr или передать его в качестве ссылки.
Во всем остальном все хаки будут работать. Можешь 0 передавать хоть с ассемблера в код крестовый который принимает ссылку и все будет дружно падать, а ссылка будет 0.


#1810382

>>1809811
Пошли маняманевры. Чел, ты мне-тотне пизди итт. Я всё прекрансо видел на что ты отвечал.


#1810393

>>1810210
Почему это говно не упало на шестой строке?
Вот тут должен был segfault случиться:

mov eax, QWORD PTR, [rax]

Вакаба, сука скобки наверное пожрёт на rax


#1810395

>>1810284
>Опять же я тебе показал что программа обратилась к неинициализированному полю без всяких ошибок сегментации.

Потому что там какой-то ёбаный эмулятор. Реальная программа сразу бы свалилась в корку.


#1810396

>>1810303
>Указатель может быть 0.

Смешно до слёз.


#1810399

>>1810393
Вообще оно и сегфолтнулось. Ошибка 139 в godbolt намекает.


#1810401

>>1810396
Плакали всей деревней программистов под Москвой


#1810403

>>1810399
Это не "ошибка" а возвращенное return из main значение.


#1810407

this is the image
3120.png 1213✘301,20Кб

>>1810403
Тогда почему тут 139?


#1810409

>>1810360
Чел, ну зачем ты продолжаешь позориться? Ты вообще не понимаешь зачем ввели nullptr.
Если бы он, как ты говоришь, проверялся в компайлтайме на присваивание какой-то ссылке (а он не проверяется, как мы видели выше), то есть он в константном выражении, то и присвоение NULL (Someref& = 0) так же легко отлавливалось и никакой nullptr для этого не нужен.
nullptr как отдельный в плюсах введен по двум причинам:
1) перегрузка функций (foo(NULL) вызовет foo(int) а не foo(some*))
2) шаблоны (аналогично, some<NULL> развернется в some<int>, а не some<some_ptr_t>)
Но - в Си нет ни того, ни другого! И снова nullptr не нужен.


#1810410

>>1810382
Ну тогда ты видел что отвечал я на "посоны вон книга где пишут Лисп"


#1810411

>>1810409
Я только про плюсы писал.
Кстати там ходят слухи про шаблоны и перегрузку функций в Си, и что их могут и добавить, тогда и твои причины будут касаться Си, и можно будет о nullptr говорить.


#1810414

this is the image
4820.png 557✘398,18Кб

>>1810407
А почему нет?


#1810415

>>1810407
>Тогда почему тут 139?
Потому что это ёбаный эмулятор.
Кто ж тебе даст запускать реальные бинарники на сервере?
Попробуй локально в консоли выполнить - словишь Segmentation fault. Core dumped. Или "";Программы выполнила недопустимую операцию и будет закрыта.".

Это я без всяких проверок тебе говорю.


#1810417

>>1810415
Это не эмулятор. Это реальные компиляторы.
Выше скрин без всяких коре дампов.


#1810418

this is the image
0570.png 476✘278,5Кб

>>1810414
Рекомендую перекатиться на операционную систему со своего спермоговна.


#1810419

>>1810415
Какой эмулятор? Ты про sandbox слышал?
Оно и на godbolt упало. 139 кидает оно в любом случае, с любым кодом там если процесс падает в сегментацию.


#1810420

>>1810418
Советую перекатиться на операционную систему со своей прошивки для микроволновки, которая падает от любого чиха.


#1810421

this is the image
3970.png 436✘860,46Кб

>>1810418
>>1810419
>>1810414

Windows ебанутая - не падает. Возвращает отрицательное число.
Вот же гандоны. И давно так?


#1810422

>>1810420
>которая падает от любого чиха.

setjmp/longjmp позволяют творить чудеса
Но Windows ведёт себя неправильно.


#1810424

>>1810421
>И давно так?
Возможно что-то в нулевой странице висит с отрицательным значением, оно оттуда тянет результат и отдает. На линуксе страница по адресу 0х00000000 не замаплена в процесс и ее убивает ядро. Это сродни тому чтобы полагаться на возврат локальных переменных по указателю. Вроде и работает, а вроде и не должно.


#1810427

>>1810420
А по-моему это нормально когда ОС имеет адекватное поведение. И если программа полезла не туда куда надо - она не продолжила исполняться дальше, а была остановлена операционной системой.
И с какого хуя разыменовывание nullptr это вообще адекватно?


#1810433

Я чё тут один пишу на винде, потом компилю сорц под Винду в дебиане, и запускаю бинарник на винде?


#1810435

>>1810427
Это UB, поэтому по стандарту может быть что угодно, а понятия адекватно-не адекватно это уже пространные рассуждения уровня морали и чести.


#1810436

>>1810433
А зачем ты делаешь этот лишний шаг? Шланг и на винде работает.


#1810439

>>1810436
>Не пользоваться божественным msvc
>Использовать ссаный шланг от анальной помпы Стива Кука


#1810442

this is the image
0010.png 464✘378,18Кб

>>1810424
>На линуксе страница по адресу 0х00000000 не замаплена в процесс и ее убивает ядро.

Это понятно. Нихуя непонятно с каких хуёв MSVC даёт спокойно завершиться программе.

Впрчем, я победил проблему и считаю что в данном случае разработчики MSVC просто ебанулись.


#1810443

>>1810439
>божественным msvc
C 20 when?


#1810452

>>1810424
Нет связи между nullptr (или NULL) и адресом 0x00000000. Может быть виртуальная память. Может быть микроконтроллер у которого адрес 0 это вектор прерываний.


#1810455

>>1810452
>Нет связи между nullptr (или NULL) и адресом 0x00000000

за nullptr ничего не скажу, это зарезервированное слово и копмилятор может пользоваться им по своему усмотрению.

Что касается NULL то испокон веков это нето вроде
#define NULL (void*) 0
и никак иначе


#1810457

>>1810455
Это не значит что тебе дадут лезть по физическому адресу 0


#1810458

>>1810457
это и коню понятно.
да и полюбому адресу не даст - ОС обязана пресекать все попытки обращения к любому адресу, не отображённому в адресное пространства процесса.


#1810577

>>1810452
Тебе расписали один из вариантов UB.
Странно отрицать что если NULL или nullptr подставляют зачастуюпро магические указатели по типу 0xDEADBEEF мы все помним при запуске всяких меморичекеров 0 значение, и если попытаться их разыменовать в указателях, то код будет содержать команду обращения к памяти по 0 адресу. Дальше дело железа и ОС


#1810623

>>1810458
Нахуй такая ОС не нужна, где нельзя писать в другой процесс и в саму ОС. Да и не ОС это будет, а прошивка тостера.


#1810639

>>1810623
Про Shared Memory слышал?


#1810650

>>1808052
Но в таком случае тред всегда будет полностью пустой


#1810652

>>1810577
На каких то платформах nullptr равен 0xFFFFFFFF


#1810721

>>1810401
плакать надо было когда медведев поднял два лярда рубасов на постройке ваших хайтек сараев


#1810722

>>1810623
Долой безопасность! Делай (int )0x7CFF5051 = 666; во славу Ленину, чтоб ебнуть ОС и все запущенные приложухи! MMU зло! Коммунизм памяти! Каждой программе по потребностям!


#1810724

>>1810652
На каких?


#1810871

>>1810639
Хуйня без задач


#1810927

>>1810871
Если вот это >>1810623 писал ты, то пиздуй в школу. Иначе возможны нюансы.


#1810972

>>1788067
>Забугром эмбедщина
>Quallcom, Mellanox, Marvell, Nvidia, Xilinx, Tesla
Речь идет про рядового анона, либо без во, либо закончившего говновуз, которые забугром нафиг не кому не нужны даже с 10 годами опыта.
Поэтому если выбирать из работы в Скотоублюдии: прогать микрики, как даун, или стать веб-разработчиком, очевидно выгоднее выбрать второе. Можно как завести трактор в ДС, так и перейти на удаленку, фриланс, когда прогером мкк будешь всю жизнь сосать за 30-40к максимум при работе оффлайн 5/2.


#1810975

>>1788546
>Причём настолько, что любой человек с опытом 3 лет на этом самом эмбедеде может спокойно ехать в какую-нибудь Германию или Францию на 4-5к рейхсмарок ежемесячно,
Но реальность такова, что типичный байтоеб из НИИ, не закончивший топ вуз в дс, будет пахать за 20к-30к и ни в какую германию и францию не уедет, потому что он там нафиг не нужен.
В то время как веб-разработчик даже в рахе может получать эквивалент 2-3 рейхсмарок через пару лет работы и работать на в разваливающемся заводе или нии, а в крутом офисе с печеньками и кондиционером со свободным графиком.


#1810976

>>1795877
> не одними деньгами, анонче. Есть ещё то, что у тебя в мозгу и душе.
Угу, пока норм прогеры уже и квартиру в новостройке/жилье купят, машину, и семью заведут, ты будешь ездить на работу на жигулях микросхемы паять и жить с мамкой, зато ДЛЯ ДУШИ работаешь, лол.


#1811007

>>1810975
>ни в какую германию и францию не уедет, потому что он там нафиг не нужен.
Потому что ссыт боится и ленится. А съездить на пару лет не помешало бы. Культурный обмен и всё такое. Копеечку заработать чтобы стать дома на ноги. Почему нет?


#1811010

>>1810976
А ты хоть жилье купил? Думаю язык Си обеспечит шансами на светлое будущее ещё не одно поколение инженеров-программистов. Все равно любой boot код писать проще на нем. Какой бы вы раст не хотели юзать или С для написания ядра, костяк все равно будет на Си. Тонна устройств которые имеют прошивку написанную Си - носишь mi band? Прошивка на Си. Фитнес трекер не на айос/ведре - тоже на Си написано. Юзаешь дома игровую приставку - на геймпаде и консоли прошивка написанная на Си вероятнее всегоили asic в геймпаде, не изучал точно. Юзаешь клаву USB или мышь? Тоже прошивка на Си. Куда не глянь, а он нас все равно окружает. И это охуенно.
Ну и да, зачем оставаться в РФ? Аргумент "ты там не нужен"? Смешно. С таким же подходом можно сказать - а зачем вообще кто-то нужен в Скотоублюдии? Правительству нужна труба, нужны месторождения, остальные просто мешают им обогащаться.


#1811011

>>1810976
>на жигулях
Как что-то плохое.
Vesta SW Cross - доволен и пока мне лучше не надо. Или это не Жигули?

А микросхемы это для души.


#1811078

>>1810972
Дружище, ты продолжаешь срать писать в этом треде, агитируя всех вступать в ряды WEB-разработки. Напоминаю, ты намеренно приходишь в Си-тред и, затрачивая свое личное скорее всего время, делаешь это.

Я у тебя попрошу совсем немного. Я не буду тебя стебать, троллить и т.д., мне чисто интересно. И так, что тебя мотивирует это делать? Какая у тебя мотивация? Что тобой движет? Какая цель этих действий?
Ну и попрошу тебя рассказать о себе в двух словах, а именно - прости за нескромный вопрос, твой возраст и род занятий (если софтваре инжиниринг, то какой).

Ну... Либо же ты просто тролль, которому просто нечего делать.


#1811080

>>1811078
> Дружище, ты продолжаешь срать писать в этом треде, агитируя всех вступать в ряды WEB-разработки.
Ну да, а тебя ебет?
>Напоминаю, ты намеренно приходишь в Си-тред и, затрачивая свое личное скорее всего время, делаешь это.
> Я у тебя попрошу совсем немного. Я не буду тебя стебать, троллить и т.д., мне чисто интересно. И так, что тебя мотивирует это делать? Какая у тебя мотивация? Что тобой движет? Какая цель этих действий?
А тебя ебет?
> Ну и попрошу тебя рассказать о себе в двух словах, а именно - прости за нескромный вопрос, твой возраст и род занятий (если софтваре инжиниринг, то какой).
А тебя ебет? 26 ЛВЛ, курьер в Delivery Club
> Ну... Либо же ты просто тролль, которому просто нечего делать.


#1811090

>>1811080
Не, меня никто не ебет (и ничего) а вот тебя, раз ты такие вопросы задаешь, возможно, кто-то и ебет по выходным

Мне всего лишь интересна твоя мотивация, лол.

> 26 ЛВЛ
А общаешься с людьми как шкила))))))

> курьер
Что и требовалось доказать - ты просто приходишь сюда посрать, дружище. Проследуйте в /b/, там для Вас место освободилось!


#1811104

>>1811090
Не корми его


#1811117

>>1811104
Понял-принял.


#1811314

>>1811090
>>1811104
Не понимаю вашего копротивления одному человеку, когда весь тред полон таких же.

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