Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
mmhzhummer
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 3
1

Защита памяти через указатели

15.07.2009, 12:41. Просмотров 1171. Ответов 8
Метки нет (Все метки)

я новичок, это раз. )

делаю тетрис, и возникла проблема с указателями. знаю что они хитрые, но продумывал код и писал его чтоб не возникло проблем с указателями, но таки возникло.
по какой то странной причине редактируется участок памяти (там массив), чего я не хочу, и в коде этого соответственно нет!

так вот, если ли возможность с++ перед началом оператора, после чего возникают проблемы, защитить известный участок памяти от редактирования и в последствии освободить?

заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2009, 12:41
Ответы с готовыми решениями:

Степень через указатели
Ребят, помогите пожалуйста! Трабл жуткий! У меня задача есть, а я с ней повис...

Защита программы которая активируется через определенный термин
Hello World коротко - пишу софтину на фирму , выполняю заказ через...

Стоит ли при динамическом распределении памяти перехватывать возможные ошибки через try/catch?
Здравствуйте. Обращаюсь к опытным. Скажите, стоит ли при каждом...

Необходимо сделать через указатели
Вот задача Даны квадратные матрицы А и В порядка n. Получить произведение ...

Передача функции через указатели
Вот задание Вычислить выражение, значение интеграла считать с погрешностью ...

8
ISergey
Maniac
Эксперт С++
1409 / 920 / 148
Регистрация: 02.01.2009
Сообщений: 2,749
Записей в блоге: 1
15.07.2009, 12:52 2
Цитата Сообщение от mmhzhummer Посмотреть сообщение
по какой то странной причине редактируется участок памяти
Пройдись отладчиком и посмотри в какой момент происходит изменение.
Цитата Сообщение от mmhzhummer Посмотреть сообщение
в коде этого соответственно нет!
Возможно вы что то упустили..

По возможности приведите пример кода.
0
mmhzhummer
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 3
15.07.2009, 13:23  [ТС] 3
точно, отладчиком стоит проверить.

Добавлено через 25 минут 23 секунды
временно решил проблему следующим образом:

так как я использую в массиве только значения 1 и 2.
я сделал проверку, если значение не соответствует предыдущим, то на его место записывется 0, что и нужно!

пока что работает ) ведь, вероятность того что в каком участке памяти записано единица или двойка мала.
0
YurA_280784
Заблокирован
15.07.2009, 15:27 4
Простой пример :
например нуна работать со строкой типа вот так

C++
1
2
3
4
5
6
7
8
9
char sPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,sPath);
char sFolder[MAX_PATH];
sprintf(sFolder,"%s",sPath);
char * chBuf = strrchr(sPath,'\\');
 
//так вот если мы сделаем такое
if(chBuf)
   sFolder[strlen(sFolder) - strlen(chBuf)] = '\0';
//то обрежим по последнему слэшу от конца не только sFolder, но и строчечку sPath

Возможно mmhzhummer у тебя похожий случай!

кстати чтоб мой код работал достаточно всего лишь так сделать
C++
1
sprintf(sFolder,"~%s",sPath);sFolder++;
а дальше всё аналогично и уже sFolder не влияет на sPath
вообщем нуна поглядеть а не перекрываются ли блоки памяти, вот
0
mmhzhummer
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 3
16.07.2009, 10:40  [ТС] 5
YurA_280784
если честно, я мало чего понял. но со временим и разберусь.

я имел ввиду что то слудеющего:

for (i =0; i < 200; i ++)
*(p_nachalo_massiva + i) = protected;
но это вряли вероятно. )
0
YurA_280784
Заблокирован
16.07.2009, 13:47 6
mmhzhummer, реально тебе смогут здесь помочь только глядя на твой код , а так это просто трата слов на форуме. Тут я полностью согласен с ISergey, вот. Исходник надо...
0
odip
Эксперт С++
7162 / 3221 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
16.07.2009, 16:49 7
если ли возможность с++ перед началом оператора, после чего возникают проблемы, защитить известный участок памяти от редактирования и в последствии освободить?
Насколько я знаю простых методов защитить участок памяти нет.
То есть любой код в твоей программе может писать во все доступные места.

Но есть множество других методов проверить кто собственно портит данные.
0
zim22
depict1
276 / 141 / 4
Регистрация: 11.07.2009
Сообщений: 606
16.07.2009, 17:04 8
Цитата Сообщение от odip Посмотреть сообщение
Но есть множество других методов проверить кто собственно портит данные.
очень содержательный комментарий. хоть бы один способ назвали...
0
odip
Эксперт С++
7162 / 3221 / 76
Регистрация: 17.06.2009
Сообщений: 14,161
16.07.2009, 17:07 9
А зачем их называть - автор все равно использовать не будет ни один
Ну например

1) Верифицировать код
2) С помощью разных отладчиков
3) С помощью специальных отладочных библиотек
1
16.07.2009, 17:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2009, 17:07

Создание вектора wstring через указатели
Вот так правильно? Обратите особое внимание на цикл do-while. ...

Значение ячейки памяти через указатель
Хочу узнать значения ячеек памяти на определенном участке. Для этого пробую...

Защита приложения от чтения памяти
Есть два приложения, одно берет процесс другого приложения, и ищет в нем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru