Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

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

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

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

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

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

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

Степень через указатели - C++
Ребят, помогите пожалуйста! Трабл жуткий! У меня задача есть, а я с ней повис совсем( Нужно написать функцию, которой передают целое...

Защита программы которая активируется через определенный термин - C++ Builder
Hello World коротко - пишу софтину на фирму , выполняю заказ через посредника (дядя с большой репутацыей на сайте фрилансеров), как...

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

Необходимо сделать через указатели - Visual C++
Вот задача Даны квадратные матрицы А и В порядка n. Получить произведение С=А*ВТ вот указания к работе 1 Ввод и вывод массива, а...

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

Создание вектора wstring через указатели - Visual C++
Вот так правильно? Обратите особое внимание на цикл do-while. vector<wstring> MachinesList; bool createMachinesList() { ...

8
ISergey
Maniac
Эксперт С++
1377 / 888 / 54
Регистрация: 02.01.2009
Сообщений: 2,675
Записей в блоге: 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
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
16.07.2009, 16:49 #7
если ли возможность с++ перед началом оператора, после чего возникают проблемы, защитить известный участок памяти от редактирования и в последствии освободить?
Насколько я знаю простых методов защитить участок памяти нет.
То есть любой код в твоей программе может писать во все доступные места.

Но есть множество других методов проверить кто собственно портит данные.
0
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
16.07.2009, 17:04 #8
Цитата Сообщение от odip Посмотреть сообщение
Но есть множество других методов проверить кто собственно портит данные.
очень содержательный комментарий. хоть бы один способ назвали...
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
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
Привет! Вот еще темы с ответами:

Значение ячейки памяти через указатель - Visual C++
Хочу узнать значения ячеек памяти на определенном участке. Для этого пробую задать указателю адрес конкретной ячейки в памяти в hex виде,...

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

Защита памяти процесса от редакторов памяти - C#
Подскажите как можно написать программу которая смогла бы защитить память другого процесса от редакторов памяти. Знаю это довольно трудная...

Через указатели на указатели посчитать сумму двух чисел и записать в третье - C++
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать примитивный калькулятор, пользуясь только...


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

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

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