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

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

Восстановить пароль Регистрация
 
mmhzhummer
0 / 0 / 0
Регистрация: 15.07.2009
Сообщений: 3
15.07.2009, 12:41     Защита памяти через указатели #1
я новичок, это раз. )

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

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

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

C++ Через указатели на указатели посчитать сумму двух чисел и записать в третье
C++ Указатели и динамическое выделение памяти
C++ указатели и выделение памяти массивам
C++ программа сделана через указатели, переделать через ссылки.
C++ указатели и очистка памяти
C++ Указатели (Выделение памяти в куче)
C++ Указатели и очистка памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 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
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
16.07.2009, 16:49     Защита памяти через указатели #7
если ли возможность с++ перед началом оператора, после чего возникают проблемы, защитить известный участок памяти от редактирования и в последствии освободить?
Насколько я знаю простых методов защитить участок памяти нет.
То есть любой код в твоей программе может писать во все доступные места.

Но есть множество других методов проверить кто собственно портит данные.
zim22
depict1
 Аватар для zim22
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++ Представление памяти, указатели
C++ Написать программу сортировки через указатели на указатели
C++ Указатели С++. Динамическое выделение памяти
Защита приложения от чтения памяти C++ WinAPI
Освобождение памяти и указатели C++

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

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

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

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