juvaforza,
спасибо. Об этом я не подумал (может, действительно кто захочет применить к такому указателю delete).
karakurt2,
Спасибо. Теперь я знаю, откуда у "метода" ноги растут. Хотя, наверняка, были и более ранние работы, но эта уж точно популяризировала этот метод.
Есть любопытный вопрос про выделение памяти с new.
Вроде как new должно порождать исключение, если выделить память не удалось (ну, или возвращать NULL-указатель при выделение памяти в С-стиле через nothrow).
Так вот, если запросить на 32-разрядной системе
new int [n]
где sizeof(int)*n>2Gb (на реальном примере я "неглядя" попросил больше 4),
то память "как бы" выделяется - ни исключения не порождается, ни NULL-указателя не выдаётся. Зато при попытках обращения (записи) уже в процессе выполнения происходит segmentation fault. Это нормальное поведение для new? Или же он должен был дать "отлуп"?
спасибо. Об этом я не подумал (может, действительно кто захочет применить к такому указателю delete).
karakurt2,
Спасибо. Теперь я знаю, откуда у "метода" ноги растут. Хотя, наверняка, были и более ранние работы, но эта уж точно популяризировала этот метод.
Есть любопытный вопрос про выделение памяти с new.
Вроде как new должно порождать исключение, если выделить память не удалось (ну, или возвращать NULL-указатель при выделение памяти в С-стиле через nothrow).
Так вот, если запросить на 32-разрядной системе
new int [n]
где sizeof(int)*n>2Gb (на реальном примере я "неглядя" попросил больше 4),
то память "как бы" выделяется - ни исключения не порождается, ни NULL-указателя не выдаётся. Зато при попытках обращения (записи) уже в процессе выполнения происходит segmentation fault. Это нормальное поведение для new? Или же он должен был дать "отлуп"?