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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

IsBadReadPtr, IsBadWritePtr - C++

04.12.2012, 09:34. Просмотров 857. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <windows.h>
#include <iostream>
#include <fstream>
int main ()
{
 char d[2][16]={"false", "true"};
 int *p=NULL;
 bool r;
 bool w;
 std::ofstream result;
 result.open("result.txt");
 r=IsBadReadPtr(p, sizeof(int));
 w=IsBadWritePtr(p, sizeof(int));
 std::cout<<d[r]<<", "<<d[w]<<", "<<(void*)p<<"."<<std::endl;
 p=new int;
 r=IsBadReadPtr(p, sizeof(int));
 w=IsBadWritePtr(p, sizeof(int));
 std::cout<<d[r]<<", "<<d[w]<<", "<<(void*)p<<"."<<std::endl;
 delete p;
 r=IsBadReadPtr(p, sizeof(int));
 w=IsBadWritePtr(p, sizeof(int));
 std::cout<<d[r]<<", "<<d[w]<<", "<<(void*)p<<"."<<std::endl;
 return 0;
}
, вложен скрин.
Миниатюры
IsBadReadPtr, IsBadWritePtr  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.12.2012, 09:34  [ТС]     IsBadReadPtr, IsBadWritePtr #2
Почему проверка невалидного указателя даёт false на обе функции?
WhiteP
606 / 204 / 23
Регистрация: 20.11.2012
Сообщений: 426
04.12.2012, 09:54     IsBadReadPtr, IsBadWritePtr #3
Имхо потому, что удаленный указатель (пометка в куче) совсем не означает, что вся страница памяти становится недоступна.Вероятно, IsBadReadPtr и т.п. смотрят атрибуты страницы.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.12.2012, 10:39  [ТС]     IsBadReadPtr, IsBadWritePtr #4
То есть проверить непосредственно адрес нельзя?

Добавлено через 1 минуту
Что самое смешное, туда действительно прошла запись и оттуда всё прочиталось. Подозреваю системную дыру.
WhiteP
606 / 204 / 23
Регистрация: 20.11.2012
Сообщений: 426
04.12.2012, 10:58     IsBadReadPtr, IsBadWritePtr #5
Цитата Сообщение от taras atavin Посмотреть сообщение
Что самое смешное, туда действительно прошла запись и оттуда всё прочиталось. Подозреваю системную дыру.
Никакой особой дыры тут нет. Память для кучи процесса выделяется блоками кратными размеру страницы. Так что максимум можно повредить кучу своего процесса.
Yandex
Объявления
04.12.2012, 10:58     IsBadReadPtr, IsBadWritePtr
Ответ Создать тему
Опции темы

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