Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
mmhzhummer
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 3
#1

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

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

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

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

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

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

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

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

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

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

Указатели и очистка памяти - C++
Возник интересный вопрос... class Test { int a; }; class Test1 : public Test { int b, c; }; int main() { Test1 *t = new Test1; ...

Указатели и динамическое выделение памяти - C++
Нужно заполнить массив из 200 элементов числами на промежутке , и найти последовательность из 10 элементов у которых наибольшее срееднее...

Указатели (Выделение памяти в куче) - C++
Чтобы создать в динамически распределяемой памяти переменную типа unsigned short необходимо написать следующее: unsigned short...

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

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

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

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

Но есть множество других методов проверить кто собственно портит данные.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
16.07.2009, 17:04     Защита памяти через указатели #8
Цитата Сообщение от odip Посмотреть сообщение
Но есть множество других методов проверить кто собственно портит данные.
очень содержательный комментарий. хоть бы один способ назвали...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2009, 17:07     Защита памяти через указатели
Еще ссылки по теме:

указатели и выделение памяти массивам - C++
дана действительная матрица размером m x n. Определить числа b1, b2, b3.... bn равные соответственно значениям средних арифметических...

Указатели С++. Динамическое выделение памяти - C++
Не пойму, почему перед квадратными скобками нужна звездочка? int **memoryAddr = new int *; Звездочка при работе с указателями несет смысл...

программа сделана через указатели, переделать через ссылки. - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; void calculation(double...

Создать указатели и ссылки на объекты в памяти - C++
Помогите, кто может Создайте в свободной памяти три объекта различных типов (Cat, Worker, Pencil…). Замените указатели ссылками и...

Указатели, выделение памяти для матрицы - C++
Ребята , nомогите nожалуйста , что означают эти заnиси, nросто не могу ни где найти обьяснения. Знаю что 1-е это выделяет nамять для...


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

Или воспользуйтесь поиском по форуму:
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
16.07.2009, 17:07     Защита памяти через указатели #9
А зачем их называть - автор все равно использовать не будет ни один
Ну например

1) Верифицировать код
2) С помощью разных отладчиков
3) С помощью специальных отладочных библиотек
Yandex
Объявления
16.07.2009, 17:07     Защита памяти через указатели
Ответ Создать тему
Опции темы

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