![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Гость_TheJax_* |
![]()
Сообщение
#1
|
Гости ![]() |
Добрый вечер уважаемые программисты. Очень хотелось бы разобраться с одним вопросом, а именно.
Вызывает ли компилятор неявно оператор new в данном случае:
И в этом случае:
Вот для символов Hello World! вызывается оператор new? Ведь указатель ptr указывает на какой-то адрес, как тогда этот адрес выделяется? И почему указатель ptr является константным ?? С указателем pp все ясно, там идет работа с копией строки "Hello World!", а вот с ptr не очень. Спасибо!!! |
|
|
![]() |
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
В первом случае:
Компилятор знает сколько памяти нужно для строки и на этапе компиляции помещает строку в исполняемый файл. А в ptr загружается адрес строки. При исполнении загрузчик загружает строку в нужный адрес и все работает ![]() Во втором случае происходит http://en.cppreference.com/w/cpp/language/..._initialization Выделяется массив pp, который код инициализации заполняет нужной строкой. EDIT2: http://c-faq.com/decl/strlitinit.html Сообщение отредактировал lanz - 14.1.2016, 10:04 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 9.5.2025, 8:14 |