> выражение new вызывает конструктор по умолчанию для каждого объекта, то есть встроенные типы должны быть инициализированы нулём.
Вовсе нет. С++98 5.3.4:15 говорит нам следующее:
A new-expression that creates an object of type T initializes the object as follows:
- If the new-initializer is omitted:
- If T is a (possibly cv-qualified) non-POD class type...
- Otherwise, the object created has indeterminate value. ...
- If the new-initializer is of the form ( ), default-initialization shall be performed;
Т.е. написал бы он
arr[i] = new char[10]();
-- была бы инициализация нулём, а не написал скобочек -- получил мусор.
> Обресетить изменения и вернуть их на мастер с форсом
> git reset --hard HEAD~1
> git push origin master -f
-- зачем?
Без специальной настройки git push origin master означает git push origin master:master, а не git push origin HEAD:master, так что в мастере что было, то и останется.
> file.h file.cpp main.c становятся как бы одним файлом.
file.cpp и main.c не становятся одним файлом если один из них не делает #include другого. Они компилируются по отдельности в два разных объектных файла и дальше обрабатываются редактором связей.
SwoDs: давай я немного развею твою печаль. Там выше я давал ссылку на известный мануал о правильном задавании вопросов: maddog.sitengine.ru/smart-question-ru.html
Прочти его, пожалуйста, а потом прочти ещё раз текст вопроса. А потом напиши сюда, кто неправ -- автор мануала или автор вопроса, и в чём именно.
Владимир Боровик: start - new_int09h -- это расстояние от new_int09h до start, но реальный размер резидента -- от точки загрузки exe до последнего байта, который должен остаться в памяти. Я бы сказал, что если функции перенести до start:, то резервировать надо (start + 0fh) / 16, но для exe могу ошибиться в меньшую сторону. Это точно должно работать для com, поскольку там адреса считаются от точки загрузки.
Вовсе нет. С++98 5.3.4:15 говорит нам следующее:
Т.е. написал бы он
arr[i] = new char[10]();
-- была бы инициализация нулём, а не написал скобочек -- получил мусор.