|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.06.2011, 08:46 | #1 |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
Не присваивается значение элементу массива LPWSTR
Есть кусок кода некоторой программы на C++
PHP код:
Вопрос такой: Почему строка dir[j]='\0'; игнорируется и не выполняется как будто в коде ее вообще нет? Вот поставил я брекпоинты на всех строках этого кода, запустил, и брекпоинт со строки "dir[j]='\0';" исчезает! И когда программа выполняется, то эту строку вообще пропускает, как будто там ничего нет. В коде, что я привел выше, вы видите третью строку закоментированной. Если ее раскоментировать, то эта строчка выполнится без проблем. Но как только ее поместить ниже цикла, так тут же она игнорируется! Я вообще не въежаю, как объяснить такое странное поведение?? Объясните пожалуйста, а то у меня от этого странного поведения уже мозг кипит. P.S. Сама задача этого кода в следующем: получить полный путь к текущей программе и отбросить в пути имя программы, оставив таким образом только путь к папке программы. |
24.06.2011, 09:40 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а компилятор умнее вас оказался
у вас нет памяти, выделеной для dir, указатель висит. вот компилятор и убирает лишнее по его мнению. да и алгоритм не верен.(у вас либо нулевой символ обнулите, либо первый) Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
24.06.2011, 16:05 | #3 | ||
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
Цитата:
Цитата:
Спасибо) Ваш пример заработал. Но я все же более посматриваю на свой алгоритм, так как он по идее должен быть быстрее. Там не подсчитывается длина массива(а это уже нету лишнего прохода по массиву). Проход осуществляется лишь один раз в цикле, где там же вычисляется последний слеш. Upd: Выделил память под dir, но строка dir[j]='\0'; всеравно не исполняется(( Почему? |
||
24.06.2011, 17:54 | #4 |
Пользователь
Регистрация: 18.08.2010
Сообщений: 41
|
А проблема то оказалась в том, что я все эти отладки и правки кода делал в релиз, а не в дебаг! Элементарно то как... Никогда не думал, что при отладке в релизе могут быть такие приколы. Теперь буду знать.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обращение к предыдущему/следующему элементу массива | feras | Общие вопросы Delphi | 1 | 08.06.2011 21:29 |
Не присваивается значение указателю в C++ Builder | DaysOfGrace | Помощь студентам | 3 | 03.03.2011 18:17 |
нужно организовать обращение к элементу массива в классе! | unsurpassed | Помощь студентам | 0 | 13.01.2011 11:53 |
Массиву класса не присваивается значения локального массива | MoroZzz45 | Общие вопросы C/C++ | 7 | 06.06.2010 14:42 |
Получить массив B, присвоив его k-му элементу значение 0, если все элементы [Pascal] | М@лышка | Помощь студентам | 10 | 12.10.2009 23:29 |