LINUX.ORG.RU

История изменений

Исправление dissident, (текущая версия) :

Я ж не против, что я дурак, понял неправильно, падок на авторитеты, макака, алкоголик и придурок. Это не меняет того, что у тебя не получается разложить проблему на элементарные блоки и так ее представить. Ты ссылаешься на стандарт, который говорит UB. Почему UB? Что конкретно не так? sizeof(T[N]) = sizeof(T)*N. В C malloc подходит для динамических массивов. Я уверен, что там есть РЕАЛЬНЫЕ причины для UB, а не «стандарт говорит». Их и интересно узнать.

PS

Чтобы она была разрешена, нужно постулировать, что operator new и прочие malloc-и возвращают память с созданным в них массивом unsigner char соответствующего размера.

Они там создаются потом placement (не array) new. Они aligned. N*aligned = aligned. Размер равен N*laligned. Его хватает, хоть это и не массив (placement array new выделяет больше памяти и это массив). Скакать можно. Мы сами скачем, потому что знаем куда. Все работает. То, что они не объекты созданные в массиве, что не представляет проблемы в C (ввиду отсутствия объектов в C), и то, что это проблема должно иметь корни и причины почему такого нельзя делать.

Исправление dissident, :

Я ж не против, что я дурак, понял неправильно, падок на авторитеты, макака, алкоголик и придурок. Это не меняет того, что у тебя не получается разложить проблему на элементарные блоки и так ее представить. Ты ссылаешься на стандарт, который говорит UB. Почему UB? Что конкретно не так? sizeof(T[N]) = sizeof(T)*N. В C malloc подходит для динамических массивов. Я уверен, что там есть РЕАЛЬНЫЕ причины для UB, а не «стандарт говорит». Их и интересно узнать.

PS

Чтобы она была разрешена, нужно постулировать, что operator new и прочие malloc-и возвращают память с созданным в них массивом unsigner char соответствующего размера.

Они там создаются потом placement (не array) new. Они aligned. N*aligned = aligned. Скакать можно. То, что они не объекты созданные в массиве, что не представляет проблемы в C (ввиду отсутствия объектов в C), и то, что это проблема должно иметь корни и причины почему такого нельзя делать.

Исправление dissident, :

Я ж не против, что я дурак, понял неправильно, падок на авторитеты, макака, алкоголик и придурок. Это не меняет того, что у тебя не получается разложить проблему на элементарные блоки и так ее представить. Ты ссылаешься на стандарт, который говорит UB. Почему UB? Что конкретно не так? sizeof(T[N]) = sizeof(T)*N. В C malloc подходит для динамических массивов. Я уверен, что там есть РЕАЛЬНЫЕ причины для UB, а не «стандарт говорит». Их и интересно узнать.

PS

Чтобы она была разрешена, нужно постулировать, что operator new и прочие malloc-и возвращают память с созданным в них массивом unsigner char соответствующего размера.

Они там создаются потом placement (не array) new. Они aligned. N*aligned = aligned. Скакать можно. То, что они не объекты созданные в массиве, что не представляет проблемы в C, должно иметь корни и причины почему такого нельзя делать.

Исходная версия dissident, :

Я ж не против, что я дурак, понял неправильно, падок на авторитеты, макака, алкоголик и придурок. Это не меняет того, что у тебя не получается разложить проблему на элементарные блоки и так ее представить. Ты ссылаешься на стандарт, который говорит UB. Почему UB? Что конкретно не так? sizeof(T[N]) = sizeof(T)*N. В C malloc подходит для динамических массивов. Я уверен, что там есть РЕАЛЬНЫЕ причины для UB, а не «стандарт говорит». Их и интересно узнать.