Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как достать доступ к виртуальной памяти, отведенной для нужд Винды 
:(
    Опции темы
GIK
Дата 6.2.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Народ, привет smile
Вобщем прочитал я пару статей про виндовую адресацию памяти, теперь интересует следующее:
Компилятор не дает значение данных хранимых, к примеру, в виртуальной области от 0x00000000 до 0x0000FFFF Если я создаю указатель, то он ссылается на первый байт, но значение от этого указателя нельзя получить и присвоить соответсятвенно тоже.
Как можно сделать так, чтобы доступ открылся?

Код

#include<conio>
#include<iostream>
using namespace std;

int main()
{
    void *g;
    int p=123;
    cout<<g<<endl; //результат- 1-ый бай ВИРТУАЛЬНОГО адресного пространства
    //cout<<*g<<endl; //и к нему нет доступа!!! (прочесть нельзя)
    //int ooo=*g;

    int *g2;
    int p2=123;
    g2=&p2;
    cout<<g2<<endl;  //адреса для кода и данных пользовательского режима, начинаются 
                                 //с 0x00010000 и заканчиваются 0x7FFEFFFF
    cout<<*g2<<endl;



    getche();
        return 0;
}


Добавлено @ 23:12 
Да, еще, чуть не забыл smile


Код

#include<conio>
#include<iostream>
using namespace std;

int main()
{
  
    int *g2;
    int p2=123;
    g2=&p2;
    g2++; //странно даже......
    cout<<g2<<endl;  //а что выдает то....
    cout<<*g2<<endl;
    getche();
        return 0;
}

Очень интересно наблюдать, когда выкидывает одинаковые числа smile

Код

#include<conio>
#include<iostream>
using namespace std;

int main()
{
  
    int *g2;
    int p2=123;
    g2=&p2;
    cout<<g2<<endl;  
    cout<<*g2<<endl;
    getche();
        return 0;
}




--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Anikmar
Дата 6.2.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



По поводу первого участка:
Код

    void *g;
    int p=123;
    cout<<g<<endl; //результат- 1-ый бай ВИРТУАЛЬНОГО адресного пространства
    //cout<<*g<<endl; //и к нему нет доступа!!! (прочесть нельзя)


А почему вы решили, что значение указателя g должно указывать на 1-й байт виртуальной памяти? Откуда такие утверждения? Вы просто видите значение переменной типа "указатель", которая НИЧЕМ не проинициализирована...

Это сообщение отредактировал(а) Anikmar - 6.2.2007, 23:18
PM MAIL ICQ   Вверх
GIK
Дата 6.2.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Куда указывает указатель? Не на память с адресом в один байт?



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Anikmar
Дата 6.2.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Он никуда не указывает! Это просто указатель. Чтобы он на что-то указывал ему нужно присвоить какое-нибудь значение. А так - все зависит от компилятора. В билдере, насколько я помню, указатель инициализируется значениме чуть больше нуля. Но не факт и в стандарте не прописано (насколько я знаю).
PM MAIL ICQ   Вверх
Romikgy
Дата 6.2.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Код

long * x;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Anikmar
Дата 6.2.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Romikgy, и? 
Не врубился...
PM MAIL ICQ   Вверх
Romikgy
Дата 6.2.2007, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(GIK @  6.2.2007,  22:37 Найти цитируемый пост)
Куда указывает указатель? Не на память с адресом в один байт?


Цитата(Romikgy @  6.2.2007,  22:42 Найти цитируемый пост)
    
long * x;

я привел пример где указатель указывает на 4 бафта smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Anikmar
Дата 6.2.2007, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Romikgy @  6.2.2007,  23:47 Найти цитируемый пост)
я привел пример где указатель указывает на 4 бафта  

И опять неправильно. С чего это следует? Пока он не инициализирован он никуда не указывает. Он МОЖЕТ указывать на память из 4-х байт (вернее на long).
А если взять конструкцию:
Код

long *pLong;
char *pChar;
long i;

pLong = &i;
pChar = (char*)pLong;


pLong и pChar имеют одно и тоже значение? И на какой участок памяти они указывают?
PM MAIL ICQ   Вверх
Romikgy
Дата 7.2.2007, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



да неправильно высказался
Цитата(Anikmar @  6.2.2007,  22:53 Найти цитируемый пост)
указатель

Цитата(Anikmar @  6.2.2007,  22:53 Найти цитируемый пост)
на 4 байта

так правильно?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
GIK
Дата 7.2.2007, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Мне кажется в любом случае, если есть значение у указателя, значет оно, хотябы косвенно, куда то указывает.... Разве я не прав?
Почему тогда нельзя взять данные из области с адресом 1? Или вообще нельзя брать данные, из неинициализированного указаьеля?


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Romikgy
Дата 7.2.2007, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(GIK @  6.2.2007,  23:12 Найти цитируемый пост)
Или вообще нельзя брать данные, из неинициализированного указаьеля? 

смотря что в нем 
Цитата(GIK @  6.2.2007,  23:12 Найти цитируемый пост)
Почему тогда нельзя взять данные из области с адресом 1?

срабатывает имхо защита на доступ в системную область


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Anikmar
Дата 7.2.2007, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(GIK @  7.2.2007,  00:12 Найти цитируемый пост)
Мне кажется в любом случае, если есть значение у указателя, значет оно, хотябы косвенно, куда то указывает.... Разве я не прав?

Нет, это не так. Поцессу выделено его адрессное пространство, но память разделена на блоки. И каждый блок должен быть выделен менеджером памяти. Если указателю присвоить произвольное значение, то это далеко не всегда попадает в распределенное пространоство для процесса. В MSDOS так можно было - пробежаться по выделенным блокам, да и в любое место залесть было можно. Но стандартом Си++ это уже никак не определено - память должна выделяться в нужном объеме и освобождаться после. Произвольные адреса не допускаются.
PM MAIL ICQ   Вверх
vinter
Дата 7.2.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата

Или вообще нельзя брать данные, из неинициализированного указаьеля?

нельзя, и нормальный компилятор будет на это ругаться..


--------------------
Мой блог
PM MAIL WWW   Вверх
Anikmar
Дата 7.2.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(vinter @  7.2.2007,  00:24 Найти цитируемый пост)
нельзя, и нормальный компилятор будет на это ругаться.. 

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

Я думал, что все что он скажет - это предупреждение "Возможное использование переменной до ее инициализации".  (зачастую оно по умолчанию выключено)

Или я чего-то не знаю?
PM MAIL ICQ   Вверх
SergeCpp
Дата 7.2.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



Цитата(GIK @  7.2.2007,  00:58 Найти цитируемый пост)
значение данных хранимых, к примеру, в виртуальной области от 0x00000000 до 0x0000FFFF

user posted image
А. В. Коберниченко — Недокументированные возможности Windows NT
В этой книге рассказано и есть пример.

Советую найти (1998 год издания) и купить.

PM MAIL WWW ICQ   Вверх
Sartorius
Дата 7.2.2007, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



SergeCpp, а на соклько это все вообще может быть актуально? Ясно, что ХР на NT ядре, но с 1998 года многое могло измениться. Тем более "недокументированные возможности"

PM MAIL ICQ   Вверх
GIK
Дата 7.2.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Все понятно, мне читать и читать. smile
Как насчет второго момента? Почему инкремент адреса дает тоже число что и значенрие хранимое по адресу , до инкремента?


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Sartorius
Дата 7.2.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Цитата

Почему инкремент адреса дает тоже число что и значенрие хранимое по адресу , до инкремента? 


 Рискну предположить, что там лежит это же число...  smile 
PM MAIL ICQ   Вверх
vinter
Дата 7.2.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



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


студия вылетает с ошибкой


--------------------
Мой блог
PM MAIL WWW   Вверх
Anikmar
Дата 7.2.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(vinter @  7.2.2007,  11:51 Найти цитируемый пост)
студия вылетает с ошибкой 

Т.е. Студия при компиляции ругнется на такой код?
Код

int MyFun(void)
{
  int *p;

  *p = 25;

 return *p;
}


Вообще-то максимум предупреждение должно быть - на то оно и Си (в смысле сотворить можно что угодно)
PM MAIL ICQ   Вверх
GIK
Дата 7.2.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Цитата

Рискну предположить, что там лежит это же число...   

Ага  smile прям в точку, иначе и быть не может smile  Тоько вот вопрос, как оно туба попало так удачно  smile  


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
vinter
Дата 7.2.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата
Т.е. Студия при компиляции ругнется на такой код?


да, вылетит с ошибкой
Цитата

Вообще-то максимум предупреждение должно быть - на то оно и Си (в смысле сотворить можно что угодно)

на то он и компилятор, чтобы не давать творить ерунду всякую smile , от которой потом роковые ошибки вылазят..


--------------------
Мой блог
PM MAIL WWW   Вверх
Anikmar
Дата 7.2.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(vinter @  7.2.2007,  18:36 Найти цитируемый пост)
на то он и компилятор, чтобы не давать творить ерунду всякую  , от которой потом роковые ошибки вылазят.. 

Это не всегда ошибка. Не должен вылететь компилятор - проверьте. Поясню на примере:
Код

int MyFun(void)
{
  int *p;
  int **pp = &p;
  int a;
  *pp = &a;

  *p = 25;

 return *p;
}



Сдесь никакой ошибки нет - вот захотелось так программеру...
PM MAIL ICQ   Вверх
vinter
Дата 7.2.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата

Сдесь никакой ошибки нет - вот захотелось так программеру...

а тут и не вылетает.. а вот там была ошибка..
кстати так и не понял почему у p и *pp, стали одинаковые адреса ведь мы же поменяли значение указателя *pp, и он стал указывать на другую область памяти, почему *p поменялся?? 


--------------------
Мой блог
PM MAIL WWW   Вверх
GIK
Дата 7.2.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



А вот меня болше интересует почему одинаковые данные вылазят, тут явно что то нето....


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Anikmar
Дата 7.2.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(GIK @  6.2.2007,  22:58 Найти цитируемый пост)
Очень интересно наблюдать, когда выкидывает одинаковые числа 

Цитата(GIK @  7.2.2007,  19:16 Найти цитируемый пост)
А вот меня болше интересует почему одинаковые данные вылазят, тут явно что то нето.... 

Мы немного отвлеклись от основного вопроса топика (совсем немного, на самом деле). 
При переносе указанного кода в мой Билдер были выданы разные числа....
Поэтому списываю на совпадение, хотя формат вывода целого числа и указателя явно должны отличаться.
В Билдере выводятся разные числа, НО: они выводятся совершенно по-разному - формат у указателя и int разный...

Добавлено @ 20:22 
Цитата(vinter @  7.2.2007,  19:02 Найти цитируемый пост)
кстати так и не понял почему у p и *pp, стали одинаковые адреса ведь мы же поменяли значение указателя *pp, и он стал указывать на другую область памяти, почему *p поменялся??  

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

Ну не должен компилятор на это ругаться! Он может предупредить, но ругаться нельзя - это не ошибка, это может так задумано было (конечно больным на голову программистом) - но могло.
PM MAIL ICQ   Вверх
threef
Дата 7.2.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Че-йто совсем я не понимаю.
Код

void *p;
int x=5;
p=&x;
cout<<*p; 


это что, попытка взглянуть на void ?
PM MAIL   Вверх
Anikmar
Дата 7.2.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(threef @  7.2.2007,  21:13 Найти цитируемый пост)
Че-йто совсем я не понимаю.

код C++
void *p;
int x=5;
p=&x;
cout<<*p; 

это что, попытка взглянуть на void ? 


Вот на это точно должен ругаться компилятор. Указатель на void НЕ РАЗЫМЕНОВЫВАЕТСЯ!
PM MAIL ICQ   Вверх
threef
Дата 7.2.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Да что ты! А в первом посте что, g - это не указатель на void ? не его ли пытаются разыменовать ? а 0 - ffff - это указатели, зарезервированные системой виртуальной памяти как NULL - указатели, и ничего оттуда не выудить. Разве что в обход этой самой системы. И Це здесь ни причем.
PM MAIL   Вверх
Anikmar
Дата 7.2.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(threef @  7.2.2007,  21:43 Найти цитируемый пост)
Да что ты! А в первом посте что, g - это не указатель на void ? не его ли пытаются разыменовать ? а 0 - ffff - это указатели, зарезервированные системой виртуальной памяти как NULL - указатели, и ничего оттуда не выудить. Разве что в обход этой самой системы. И Це здесь ни причем. 

Упс... А слона я и не заметил!
Я начал читать не с первой строчки первого поста и что-то увлекся теорией!  smile (ну невнимательный я!)

Ну, мои посты особо этому не противоречат  smile 

Виноват-с-с-с... Обмишурился.... smile 

Это сообщение отредактировал(а) Anikmar - 8.2.2007, 19:45
PM MAIL ICQ   Вверх
W4FhLF
Дата 8.2.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Цитата(GIK @  6.2.2007,  22:58 Найти цитируемый пост)
Компилятор не дает значение данных хранимых, к примеру, в виртуальной области от 0x00000000 до 0x0000FFFF



Это область выявления нулевых указателей. Она специально зарезервирована создателями ОС, физически этой области не существует, а при работе в режиме пользователя диспетчер памяти при обращении к страницам в пределах 0x00000000-0x0000FFFF выплюнет исключение, в режиме ядра, при отсутствии своего сеха,  получишь БСОД. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GIK
Дата 8.2.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



W4FhLF, спасибо конечно, но я это перечитал уже smile
Как грица, чем дальше в лес тем шире партизаны smile
Вот еще один не менее занимательный момент, у меня, кроме того что вылетает одинаковые числа (я закоментировал какие), еше разница в адресах имеет непонятную разницу. После инкремента указателя и декремента сразу, она равна 12, а после просто инкремента, она равна 4. Вобщем сдесь видно:
Компилятор - булдер 6.0. Может он устарел?
Код

#include<conio>
#include<iostream>
using namespace std;

int main()
{

    int *g1;
    int p1=123;
    g1=&p1;
    g1++;
    cout<<g1<<endl;   //1245064
    cout<<*g1<<endl;  //1245064

  //  а теперь инкремент и декремент
   // есть разница = 12 между адресами указателя и значение выводит правильное
    int *g2;
    int p2=12345;
    g2=&p2;
    g2++;
    g2--;
    cout<<g2<<endl;   //1245052
    cout<<*g2<<endl;  //12345

   // а теперь разница в указателях = 4, что вобшем-то и логично :)
    int *g3;
    int p3=12345;
    g3=&p3;
    g3++;
    //g3--;
    cout<<g3<<endl;   //1245048
    cout<<*g3<<endl;  //1245048


    getche();
        return 0;


}



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Anikmar
Дата 8.2.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Думаю все дело в выводе на экран. Если заменить cout на printf все нормально.
Под отладчиком тоже все впорядке
PM MAIL ICQ   Вверх
W4FhLF
Дата 8.2.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Цитата(GIK @  8.2.2007,  17:57 Найти цитируемый пост)
но я это перечитал уже


Тогда в чём вопрос изначально заключается? 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
GIK
Дата 8.2.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



Ну я вообщето хотел доступ открыть smile Глупо наверное, но а вдруг кто знает как?  Может через виндовые функции?

Добавлено @ 18:38 
Меня вообщето еще масса вопросов мучает, но чувствую, если модера заметят, что я их задаю, будут ругатся smile


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Anikmar
Дата 8.2.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



 smile 
Странно, почему мое сообщение закрыли? Матного там нет - грубовато конечно, но в шутливом же аспекте...
Цитата(Anikmar @  7.2.2007,  21:48 Найти цитируемый пост)
Сообщение скрыто модератором: SergeCpp +
Причина: временно


PM MAIL ICQ   Вверх
W4FhLF
Дата 8.2.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



Цитата(GIK @  8.2.2007,  18:34 Найти цитируемый пост)
Ну я вообщето хотел доступ открыть 


К несуществующему в физической памяти участку? Там нет ничего, ни виртуально, ни физическиsmile


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SergeCpp
Дата 8.2.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



Цитата(Anikmar @  8.2.2007,  20:53 Найти цитируемый пост)
Странно, почему мое сообщение закрыли?

Вы ПМ читаете?.. Одно Вам отправлено при скрытии и одно я отправил. Прочтите их.

PM MAIL WWW ICQ   Вверх
Anikmar
Дата 8.2.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(SergeCpp @  8.2.2007,  19:28 Найти цитируемый пост)
Вы ПМ читаете?.. Одно Вам отправлено при скрытии и одно я отправил. Прочтите их.

Точно! Тут же ящик есть - забыл совсем.

Исправился - больше не буду.
По крайней мере постараюсь.

Какой хороший форум - даже себя обзывать нельзя!  smile 
PM MAIL ICQ   Вверх
SergeCpp
Дата 8.2.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



Цитата(GIK @  8.2.2007,  20:34 Найти цитируемый пост)
Меня вообщето еще масса вопросов мучает, но чувствую, если модера заметят, что я их задаю, будут ругатся

По теме памяти задавайте! user posted image

А вот Вам подарок user posted image

PM MAIL WWW ICQ   Вверх
GIK
Дата 8.2.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 1
Всего: 14



О, какой приятный сюрпризик, однако smile Вот уж сенькью, так сенькью smile


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0912 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.