|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.06.2011, 16:05 | #11 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
profi, кстати, я нашел в чем проблема. В выделении памяти в функции, но пока не нашел способ её решить. Вот при таком использовании:
Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
|
07.06.2011, 16:07 | #12 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
profi, так неправильно!
Что есть pPointer? Переменная типа "указатель на WCHAR". Это вполне обычный тип, такой же как, например, int, double, char, bool. Давайте для ясности определим синоним для WCHAR*: Код:
Код:
Код:
UPD. ImmortalAlexSan, то же самое. Оператор new возвращает значение типа "указатель на...". В функции вы присваиваете это значение локальной копии переменной. Сделайте typedef, как я писал выше, и все будет гораздо более понятно. Я уже не раз тут писал, что переменную типа PWCHAR нужно передавать по указателю или ссылке, чтобы иметь возможность изменять ее значение внутри функции.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же Последний раз редактировалось Гром; 07.06.2011 в 16:10. |
07.06.2011, 16:12 | #13 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
Гром, потому что функция создает локальную переменную, которую и меняет. У меня крыша сейчас поедет. А можно использоать LPWSTR? Это тоже WCHAR*. Попробовал я этот LPWSTR/PWCHAR - ничего не поменялось. Я прочитал, что указатель, который функция возвращает, это указатель на локальный объект внутри фунции и при удалении я не с той памятью просто работаю. Мне нужно в функции использовать new Гром, я пробовал делать, как вы написали - не выходит.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
Последний раз редактировалось ImmortalAlexSan; 07.06.2011 в 16:18. |
07.06.2011, 16:22 | #14 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Гром че ты нагородил. Если в функцию передается указатель, это уже не по значению, это передается адрес. Я подсказал правильно. Через
Код:
Код:
ImmortalAlexSan странно, что валится. Ради интереса скачай себе Code::Blocks. И попробуй там реализовать тот код, что ты сюда постил. Последний раз редактировалось profi; 07.06.2011 в 16:34. |
07.06.2011, 16:39 | #15 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
Сейчас попробую.
Я уехал... Как разбирусь - отпишусь.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
Последний раз редактировалось ImmortalAlexSan; 07.06.2011 в 17:08. |
07.06.2011, 17:08 | #16 | |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
profi, объясняю еще раз.
Цитата:
А если нам нужно работать с указателем на эту переменную? Например, присвоить указателю значение? Код:
Что мы пытаемся здесь сделать? У нас есть указатель y. Этот указатель указывает на некую переменную типа int. Мы хотим выделить память для этой переменной. Для этого мы передаем в функцию указатель (пока еще не валидный), вызываем оператор new и присваиваем то, что он возвращает, этому указателю. Как бы все нормально, за одним ма-а-аленьким исключением - мы работаем не с переменной типа int, а с переменной типа int*, мы хотим, чтобы этой переменной в функции присвоили какое-то хорошее значение. ЗАБУДЬТЕ, ЧТО y ИМЕЕТ ТИП "УКАЗАТЕЛЬ"! Это тоже переменная. И вот эту самую переменную мы и передаем в функцию. По значению. Epic fail. Чтобы присвоить переменной типа int* какое-то значение, нужно переменную этого типа передать по указателю или по ссылке. Код:
Код:
DIXI.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
|
07.06.2011, 17:15 | #17 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
[удалил сам]
Последний раз редактировалось profi; 07.06.2011 в 17:52. |
07.06.2011, 17:18 | #18 |
Участник клуба
Регистрация: 13.01.2009
Сообщений: 1,353
|
Гром, profi, проблема решена. Спасибо, вам ребят. тут много кода правильного приведено, но ошибка была вто тут:
Код:
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
|
07.06.2011, 17:49 | #19 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Гром, стыдно, извиняюсь, тупанул.
Код:
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужно написать программу в debug | melkaya9112 | Помощь студентам | 1 | 09.12.2010 01:01 |
Visual Studio 2010, при запуске на debug или rebuild вылетает ошибка | Evgeniy1989 | Общие вопросы .NET | 1 | 20.08.2010 08:34 |
error C2541: 'delete' : cannot delete objects that are not pointers | novokhatsky | Общие вопросы C/C++ | 2 | 14.12.2009 10:25 |
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/main.exe : fatal error LNK11 | prefak | Win Api | 0 | 19.04.2009 16:51 |
Debug/DLL10.dll : fatal error LNK1136: invalid or corrupt file | AHJLPeu* | Общие вопросы C/C++ | 2 | 23.10.2008 20:59 |