![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 28.07.2009
Сообщений: 8
|
![]()
Программирую недавно, над вопросом бъюсь второй день
![]() Вопрос следующий: при присвоении значения одного указателя другому, возникает ошибка "Access violation writing location". Что я делаю неправильно? Общий случай: Код:
Код:
Последний раз редактировалось Sazary; 28.07.2009 в 15:02. |
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 16.04.2009
Сообщений: 247
|
![]()
fnPlus работает вроде нормально, только она копирует одну строку в другую, а не складывает их. Ошибка может быть, например, из-за того, что нет нулевого символа в пределах s.
|
![]() |
![]() |
![]() |
#4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 17.07.2009
Сообщений: 91
|
![]()
скажите что делают эти 2 строки
Код:
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 30.05.2009
Сообщений: 46
|
![]()
В первом случае никакой ошибки, на первый взгляд, быть не должно.
Вопрос скорее в том, что вы передаёте ей в качестве аргумента. |
![]() |
![]() |
![]() |
#7 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
![]()
str[i] = str[wlen-i-1]; //здесь и возникает ошибка
размер массива не соответсвует wlen-i-1 в какомто такте из циклов, программа обратилася по несуществующему адрессу и поэтому вылетает. while(*s) *t++ = *s++; //здесь и возникает ошибка аналогично массив s может быть больше чем массив t тогда шоли условие написть надо так while (*s | *t) вообщем вердикт такой: у тебя memory leaks в этих вдух случаях из за неверного размера "массива- получателя" хехехе |
![]() |
![]() |
![]() |
#8 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
![]()
Так же не могу не обратить внимание на переменную wlen, судя по всему это какая-то глобальная переменная. Это плохой стиль программирования.
Vladss, старайтесь не использовать глобальные переменные, хоть иногда это и наиболее простое решение, передавайте все что нужно функции через ее параметры. Т.к. в данном случае не известно, как инициализируется wlen, то ошибка, судя по всему, возникает из-за некорректного значения этой переменной (обращение к несуществующему индексу массива, т.е. запрещенной, для данной программы, области памяти). Вообщем объявление wlen - в студию. Вообще работа с указателям - опасная штука. Нужно быть очень внимательным, особенно при активном их использовании. В Вашем случае указатели используется очень рискованно и неразумно, поэтому вторую функцию предлагаю полностью переписать: Код:
Код:
А вообще, что бы не изобретать велосипед есть замечательные функции: strcpy и strncpy. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 30.05.2009
Сообщений: 46
|
![]()
вторую можно переписать так:
Код:
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 28.07.2009
Сообщений: 8
|
![]()
от автора))) Спасибо всем за отзыв..........
а)Прошу прощения - в строке int len = strlen(str) имелось ввиду int wlen = strlen(str); т.ч. это обычная переменная...... б)цит: "А с чего ты взял что этот код сложит тебе строки? И почему бы не воспользоваться стандартными функциями?" while(*s) *t++ = *s++; Со стандартными всё ясно! Не могу понять, почему в аналогичных ситуациях я не могу присвоить одниму указателю значение другого! Может быть это очевидно, а может это очевидная чепуха, т.ч. простите за вопрос! |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при работе с БД Access | Evgen1976 | БД в Delphi | 8 | 16.06.2009 21:29 |
Ошибка при работе с структурой | Nullator | Общие вопросы C/C++ | 11 | 07.03.2008 23:52 |
Ошибка при работе с файлом | LeoN | Общие вопросы Delphi | 1 | 07.12.2007 15:21 |
Ошибка при работе с БД | malevich | БД в Delphi | 8 | 25.11.2007 15:10 |