Бляди тоже ок, ага. Войти !bnw Сегодня Клубы

<foobaz> i remember the good old days on classic mac os, apple made the page
at memory address 0 empty and writeable by anyone, so buggy apps
wouldn’t crash :)

Рекомендовали: @krkm @minoru
#G31H8K / @ninesigns / 3645 дней назад

shared memory @ удобно
#G31H8K/JCU / @lexszero / 3645 дней назад
@lexszero null ptr @ сишечька
#G31H8K/PGH / @gds --> #G31H8K/JCU / 3645 дней назад

@gds зато приложения не крешатся, мечта

#G31H8K/9RX / @ninesigns --> #G31H8K/PGH / 3645 дней назад
а gсс (под виндами как минимум) разрешает писать/читать один (послепоследний) элемент за пределами массива и не сигфолтится (vc не разрешает).
#G31H8K/XR7 / @mugiseyebrows / 3645 дней назад

@mugiseyebrows дебаг включен или нет?

#G31H8K/LUP / @ninesigns --> #G31H8K/XR7 / 3645 дней назад
@4da в релизе вроде тож работает
#G31H8K/MSU / @mugiseyebrows --> #G31H8K/LUP / 3645 дней назад

@mugiseyebrows а собственно хуле ты удивляешься given тот факт, что память страницами выделяется?

#G31H8K/611 / @ninesigns --> #G31H8K/MSU / 3645 дней назад
@4da можно руками ммапнуть PAGE_SIZE и обосраться.
#G31H8K/4UO / @lexszero --> #G31H8K/611 / 3645 дней назад
@4da не удивляюсь, просто приятная (на самом деле нет) особенность (и помойму только в мингв-гцц, а в сигвине крашится)
#G31H8K/ZES / @mugiseyebrows --> #G31H8K/611 / 3645 дней назад

@mugiseyebrows кстати, выдели массив размером в 4K и запиши в элемент следующий за последним.

#G31H8K/08L / @ninesigns --> #G31H8K/ZES / 3645 дней назад
@4da я наврал, можно идти значительно дальше последнего элемента если память под массив выделена чем-то кроме маллока (программа крашится на test3()) на test1() и test2() пишет и читает верно #include <iostream> #include <memory> #include <cstdlib> int g_buf[4096]; void test1() { for (int i=0;i<=5000;i++) { g_buf[i] = i; } std::cout << " test1 " << g_buf[5000]; } void test2() { int* buf = new int[4096]; for (int i=0;i<=5000;i++) { buf[i] = i; } std::cout << " test2 " << buf[5000]; } void test3() { int* buf = (int*)malloc(sizeof(int)*4096); for (int i=0;i<=5000;i++) { buf[i] = i; } std::cout << " test3 " << buf[5000]; } int main(int argc, char** argv) { test1(); test2(); test3(); }
#G31H8K/IAL / @mugiseyebrows --> #G31H8K/08L / 3645 дней назад

@mugiseyebrows собсна можешь запустить программу в отладчике, пропалить адреса, затем вызвать pmap и посмотреть из какого региона адрес и скока можно еще хуесосить

#G31H8K/IZE / @ninesigns --> #G31H8K/IAL / 3645 дней назад
@mugiseyebrows а если собрать под сигвином с сигвиновым гцц то вообще не крашится
#G31H8K/E5V / @mugiseyebrows --> #G31H8K/IAL / 3645 дней назад

@mugiseyebrows а, ну не pmap, а чо там под шиндой. process explorer?

#G31H8K/20L / @ninesigns --> #G31H8K/IAL / 3645 дней назад
@4da сорь, я не хекер
#G31H8K/3WU / @mugiseyebrows --> #G31H8K/20L / 3645 дней назад
@4da короче в линуксах тож можно тыкать память небезопасно (неглубоко) (assuming ideone.com is on linux) http://ideone.com/HSnKCL судя по оутпуту маллоченые массивы имеют ассерты на доступ к памяти которые охраняют границы
#G31H8K/HGG / @mugiseyebrows --> #G31H8K/20L / 3645 дней назад
@mugiseyebrows нет, ты просто кучу распидорасил и либцшный аллокатор от этого обосрался.
#G31H8K/OHN / @lexszero --> #G31H8K/HGG / 3645 дней назад
@lexszero ясн, спасибо
#G31H8K/Z7I / @mugiseyebrows --> #G31H8K/OHN / 3645 дней назад

А что вы хотели от операционной системы 91 года? Хоть какая-то виртуальная память есть — и ладно.

#G31H8K/68M / @ceyt / 3645 дней назад

@ceyt какая разница какого года /ос/ ?
ты думаешь до 90ых не было осей с защитой памяти?

#G31H8K/7OL / @ninesigns --> #G31H8K/68M / 3645 дней назад

@4da Не было бы разницы, если бы не совместимость с программами и инструментами начала девяностых.

#G31H8K/L75 / @ceyt --> #G31H8K/7OL / 3645 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.