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

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

Войти
Регистрация
Восстановить пароль
 
 
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

Капризный указатель О_о - C++

25.06.2013, 10:30. Просмотров 973. Ответов 27
Метки нет (Все метки)

Создаю указатель на байт, при помощник арифметических операций +/- перемещаю его в цикле. Почему при уходе в минус ~2500 и в плюс ~1500 программа завершается ошибкой?

Добавлено через 3 минуты
C++
#include <iostream>
 
int main()
{
char * b = "1234567890";
 
for ( int i = -2600 ; i < 1600 ; i ++ )
b ++ ;
 
std::cout << *b << std::endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 10:30     Капризный указатель О_о
Посмотрите здесь:

Иероглифы в выводе и капризный SET_LOCALE - C++
Здравствуйте, форумчане! Изучаю я СиПлюПлюс по книжке дяди Шилдта. Есть тут задание на построение &quot;таблицы&quot;. Но при выводе ( даже с...

Ссылка на указатель на указатель - C++
void TEST( int **&amp;refptr, int const &amp;N); int main() { int const N = 10; int i{ 0 }, b{ 2 }, *ptr{ &amp;i, &amp;b }; ...

Освободить указатель на указатель - C++
class Interface { }; class Test : public Interface { }; void main() { Interface** s = new Interface*; for (int i =...

Указатель на указатель на функцию - C++
Дан следующий код void f () {} void main() { void (**ppf) (); } Вопрос: какой код следует написать, чтобы...

Про указатель *, указатель на указатель **, и про new - C++
#include &quot;stdafx.h&quot; class neuro { public: double *inputs; int inputs_count; neuro(int uc, double ii ) { ...

Указатель((( - C++
Составить программу, которая подсчитывает для из массивов А и В количество различных по значению элементов в каждом из этих массивов....

Указатель на указатель - C++
Есть задача: Дана динамическая строка размер массива символов которой точно соответствует строке. написать функцию которая добавляет...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
1586 / 1063 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.06.2013, 11:53     Капризный указатель О_о #21
Цитата Сообщение от programina Посмотреть сообщение
мне под линукс надо.
под вайном запусти
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
25.06.2013, 11:54     Капризный указатель О_о #22
Цитата Сообщение от programina Посмотреть сообщение
мне под линукс надо.
попробуйте покопать в сторону этого:
PTRACE
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
25.06.2013, 12:02  [ТС]     Капризный указатель О_о #23
@Croessmah, спасибо, посмотрю.

Добавлено через 6 минут
Жаль только, что для этого надо запускать процессы от родителя, неплохо если бы можно было получать доступ ко всем программам.
TakeOver
41 / 31 / 1
Регистрация: 03.02.2013
Сообщений: 61
25.06.2013, 12:06     Капризный указатель О_о #24
строка заносится в секцию .data, где могут хранится другие константы, а дальше может идти сам код программы, поэтому код не крашится на определенных значениях. это UB. и не в с++ проблема.
Цитата Сообщение от programina Посмотреть сообщение

Не по теме:

@Croessmah, подожду стандарта c++211



Добавлено через 3 минуты
@Tulosba, а не знаете по какому принципу можно просканировать всю остальную память?

Добавлено через 1 минуту
например у меня запущен текстовый редактор, я хочу отыскать в памяти название открытого в нем файла.
нормальными средствами это невозможно. что вы будете проверять на имя файла? проверять все значения в стеке и искать среди них возможные указатели? скорее код упадет с sigseg нежели вы найдете там валидный указатель. (разрабтчики boehm gc - консервативного GC для с/с++ определяют "корни" дерева для сборки мусора в стеке - при условии, что _ВСЕ_ может быть указателем).
ArtMoney работает по тому принципу, что сканирует всю память(почти как boehm gc) приложения и выделяет те участки, которые совпадают по значению, а потом отсеивают их.

//если где-то ошибся - поправьте.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
25.06.2013, 12:23  [ТС]     Капризный указатель О_о #25
@TakeOver, к сожалению, если верить википедии, сбор мусора тоже происходит в одной среде, то есть не получится добраться до постороннего процесса
oxotnik
25.06.2013, 13:06
  #26

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Жаль только, что для этого надо запускать процессы от родителя, неплохо если бы можно было получать доступ ко всем программам.
Тогда б это была бы венда, со всеми вытекающими последствиями в виде уязвимостей.

programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
26.06.2013, 08:14  [ТС]     Капризный указатель О_о #27
что интересно, ошибка сегментации возникает при попытке разыменовать адрес, а вообще указатель можно перемещать куда угодно, можно даже в отрицательное пространство адресов залезть . Например:
C++
char *b = (char *)("1234567890");
 
for (int i = 0; i < 4500000000; i++)
    b--;
 
cout << b << endl; // минус
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 08:22     Капризный указатель О_о
Еще ссылки по теме:

указатель - C++
ввод: (1&lt;=n&lt;=100) вводим n вывод: Сумма элементов до максимума... Input Output 8 1 9 1 -1 -1 9 1 1 0

указатель - C++
как сделать эту программу с использованием указателя? #include &lt;iostream.h&gt; #include&lt;conio.h&gt; void main() { clrscr(); int...

Указатель на указатель - C++
Чем отличаются указатели на указатель от ссылки на указатель? Встретилась программа для работы со списками. В ней есть функция Insert....

Указатель на указатель - C++
Добрый день! Читал про многоуровневую адресацию, но не понял одну штуку. Когда мы пользуемся функцией printf(), то можем написать код...

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


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

Или воспользуйтесь поиском по форуму:
TakeOver
41 / 31 / 1
Регистрация: 03.02.2013
Сообщений: 61
26.06.2013, 08:22     Капризный указатель О_о #28
Цитата Сообщение от programina Посмотреть сообщение
что интересно, ошибка сегментации возникает при попытке разыменовать адрес, а вообще указатель можно перемещать куда угодно, можно даже в отрицательное пространство адресов залезть . Например:
C++
char *b = (char *)("1234567890");
 
for (int i = 0; i < 4500000000; i++)
    b--;
 
cout << b << endl; // минус
указатель - не более чем значение типа int_ptr_t . А с чего бы оно должно падать? падать оно может только от попытки доступа к несуществующей памяти, а не от того, что вы присвоили ему какое-то значение.
да хоть 123 присвойте.
Yandex
Объявления
26.06.2013, 08:22     Капризный указатель О_о
Ответ Создать тему
Опции темы

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