|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.06.2015, 13:10 | #1 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
Странности компилятора?
Всем привет. Помогите разобраться, пожалуйста.
Есть код: Код:
UPD: компилятор из Microsoft Visual Studio 12
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
19.06.2015, 13:38 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
P.S. Я если ее найду, я тебе скину ссыль.
I'm learning to live...
|
|
19.06.2015, 13:43 | #3 | |||||
Пользователь
Регистрация: 19.06.2015
Сообщений: 15
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
|||||
19.06.2015, 15:54 | #4 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,770
|
Плюс память в куче распределяется обычно с большим выравниванием, на 16 байт вроде. Так что если запросить 1 байт, выделится 16 байт, и следующие 15 байт после переменной будут свободны, и в них можно будет что-то записать по указателю.
|
19.06.2015, 16:09 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
|
21.06.2015, 20:28 | #6 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
Всем спасибо за ответы
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
22.06.2015, 17:06 | #7 | |||||
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
У new-expression имеется две формы.
Первая - для выделения non-array типа. Вторая - для выделения массива. Какая из форм будет выбрана зависит от синтаксиса. Синтаксис new-expression: Цитата:
Код:
Цитата:
Цитата:
Таким образом здесь: Код:
Но даже, если Вы скопируете пустую строку и не выйдете за пределы, то Вы вызываете не ту форму delete (их тоже две - для массивов и non-array типов), а это тоже UB: Цитата:
Цитата:
Последний раз редактировалось Croessmah; 22.06.2015 в 17:46. |
|||||
24.06.2015, 22:53 | #8 | ||
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Код:
http://rextester.com/CVBK10195 Код:
однако в данной ситуации имеет место new-expression Код:
это - валидная операция выделения памяти в куче, и инициализации её при помощи конструктора объекта. Цитата:
компиляторы могут пропасти подобные ошибки. но не обязаны этого делать. выставляйте высокий уровень предупреждений. читайте ворнинги. подвергайте код статическому анализу. Последний раз редактировалось Stilet; 25.06.2015 в 08:18. |
||
25.06.2015, 08:19 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Странности с полиморфизмом | _Bers | Общие вопросы C/C++ | 4 | 03.02.2012 20:48 |
UnloadKeyboardLayout - странности | Radical_Edward | Win Api | 0 | 29.01.2012 14:29 |
Странности компилятора: ругается на класс | Levsha100 | Общие вопросы C/C++ | 6 | 17.03.2010 21:37 |
Странности в Builder 6 | Foxtrod | C++ Builder | 10 | 03.10.2009 01:09 |
Странности Chrome` а | ]Wowan[ | Софт | 1 | 27.04.2009 04:11 |