![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Annihilator |
|
||||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
а где память под start выделяешь??? Без буфера - никак
а про strrev(char* s) все дружно забыли. Но опять же без буфера никуда Это сообщение отредактировал(а) Annihilator - 24.9.2008, 19:55 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
посмотрите внимательнее код - память для start не нужна - он используется как указатель на основную строку, равноправный указателю str, под который тоже память нигде не выделялась ) а технология используется следующая :
как видете ни одного стороннего байта не используются. Такое возможно благодаря некоторому свойству оператора XOR. |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
ну это все равно не рабочий вариант, считай у нас дано const char *
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Maka6er |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 27.2.2007 Где: Киев Репутация: нет Всего: 3 |
А разве обязательно под указатель выделять память? Указатель должен указывать на область в памяти. Я устанавливаю один указатель на начало строки, один - на конец.
const char * - это указатель на строковую константу (строковый литерал), а константу изменить нельзя. Это сообщение отредактировал(а) Maka6er - 25.9.2008, 12:24 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
А vinter что имел ввиду? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Maka6er |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 27.2.2007 Где: Киев Репутация: нет Всего: 3 |
||||
|
||||
| serg76 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
даже не выделяя переменную для цикла зы полный бред имхо тож самое что бутерброды делать топором |
|||
|
||||
| J0ker |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
ты бы почитал сначала обсуждение этот код в большинстве случаев приведет к Segmentation fault и Access violation |
||||
|
|||||
| serg76 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.3.2008 Репутация: нет Всего: нет |
а где приведет то, конкретнее? зы насчет const наскока помню в С через указатели можно все менять для примера к коду выше заменить
на
|
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
При таком подходе Вы надеетесь, что даные размещенные по указателю str1, размещаются в пользовательской области с правом записи. Однако строчка : говорит компилятору о возможности размещении данных в памяти только для чтения. Как видите результат выполнения операций в таком случае потенциально опасен и зависит от компилятора и его настроек. |
|||
|
||||
| J0ker |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
здесь:
строковые литералы явяются константами и могут размещаться в защищенном от записи сегменте возможность присвоения их не константам - тяжелое наследие прошлого Добавлено @ 19:07 объявление типа
размещает массив на стеке - что позволяет менять его содержимое Добавлено @ 19:17
это говорит компилятору, что str константный массив. Но размещение его будет на стеке (потому, что это массив - он просто с инициализатором) выражение:
говорит о том, что str указатель на константную строку, инициализируемый АДРЕСОМ строкового литерала, который возможно находится в защищенном от записи сегменте как грится "почувствуйте разницу" Это сообщение отредактировал(а) J0ker - 27.9.2008, 19:17 |
||||||||||
|
|||||||||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Ну это смотря где его объявить. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| J0ker |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
да в функции иначе в секции .rdata (защищенные от записи и исполнения инициализированные данные) и .data (защищенные от исполнения инициализированные данные) соответственно хотя рояля это и не играет Это сообщение отредактировал(а) J0ker - 28.9.2008, 06:56 |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |