0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 3
1

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

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

Author24 — интернет-сервис помощи студентам
я новичок, это раз. )

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

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

заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2009, 12:41
Ответы с готовыми решениями:

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

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать...

Написать программу сортировки через указатели на указатели
Вот моя программа #include <iostream> #include <conio.h> #include <string> using namespace...

указатели и очистка памяти
В отличии от java в с++ память по умолчанию нужно очищать самостоятельно. Понятно, что если...

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

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

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

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

пока что работает ) ведь, вероятность того что в каком участке памяти записано единица или двойка мала.
0
Заблокирован
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
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
Заблокирован
16.07.2009, 13:47 6
mmhzhummer, реально тебе смогут здесь помочь только глядя на твой код , а так это просто трата слов на форуме. Тут я полностью согласен с ISergey, вот. Исходник надо...
0
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
16.07.2009, 16:49 7
если ли возможность с++ перед началом оператора, после чего возникают проблемы, защитить известный участок памяти от редактирования и в последствии освободить?
Насколько я знаю простых методов защитить участок памяти нет.
То есть любой код в твоей программе может писать во все доступные места.

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

1) Верифицировать код
2) С помощью разных отладчиков
3) С помощью специальных отладочных библиотек
1
16.07.2009, 17:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2009, 17:07
Помогаю со студенческими работами здесь

Указатели и очистка памяти
Возник интересный вопрос... class Test { int a; }; class Test1 : public Test { int b, c; }; int...

Представление памяти, указатели
Доброго времени суток, форумчане. Практика языка и программирования уже есть, но всё на начальном...

Освобождение памяти и указатели
int **Matrix1 = new int*; // Создаем 1-ю матрицу for (int i(0); i &lt; N1; i++) Matrix1 = new...

Указатели. Освобождение памяти в функции
Здравствуйте, разбираю учебный код, к сожалению, нет к нему комментария на нужный мне вопрос: В...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru