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

Указатели - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибки копиляции http://www.cyberforum.ru/cpp-beginners/thread325130.html
Решил изучать С++ по книге Стефана Р. Девиса "С++ для начинающих". Написал пример програмки из книги в DEV-C++. Всё написано правильно, однако при компиляции происходят ошибки, которые вы видете на фото. При нажатии на первую строчку в строке ошибок ничего не происходит, а если нажать на остальные, ошибки выделяются. Подскажите пожалуйста, как их исправить. Вроде бы всё представил...
C++ что не так с программой? С++. помогите, пожалуйста, завтра сдавать уже! при компиляции виснет. Задание такое: в матрице найти 1) максимум среди сумм диагоналей, параллельных побочной 2) произведение в тех строках, где нет отрицательных элементов вот мой код: #include<iostream.h> #include<math.h> void main() http://www.cyberforum.ru/cpp-beginners/thread325129.html
Ошибка в строке file.write C++
Помогите разобраться с записью file.write (49строчка) в чем ошибка??? #include <iostream> #include <fstream> #include <stdlib.h> #include <locale> #include <iterator> #include <conio.h> #include <string> #include <vector> #include <algorithm>
C++ Написать программу, которая по номеру месяца выдает название следующего за ним месяца (при т = 1 получаем февраль, 4 - май и т.д.).
Написать программу, которая по номеру месяца выдает название следующего за ним месяца (при т = 1 получаем февраль, 4 - май и т.д.). Решить задачу в VC++.
C++ Сформировать матрицу размера M × N, у которой в каждом столбце содержатся все числа из исходного набора http://www.cyberforum.ru/cpp-beginners/thread325098.html
Есть задача Даны целые положительные числа M, N и набор из M чисел. Сформировать матрицу размера M × N, у которой в каждом столбце содержатся все числа из исходного набора (в том же порядке). предположим M=3 N=3 матрица но что значит набор из М чисел? исходя из логики матрица будет 3 3 3 3 3 3 3 3 3 та чтоли?
C++ Из массива A сформировать массив B Пожалуйста кто может помогите! В субботу экзамен - нужен допуск... а я не знаю как справиться с этой задачей((( уже не знаю к кому обратиться(( Задача в с++ "Для заданного массива A из M чисел сформируйте массив В из M/2 чисел по формуле: B(i) = (A(i) + A(M + 1 - i))/2. Предусмотрите случай когда M нечетно. " подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.06.2011, 17:14     Указатели
А какой вид имеет виртуальная память? Шестнадцатеричное число? И может ли быть у разных программ переменные с одинаковым виртуальным адресом?
Да, могут. Реально это будут разные физические адреса, а виртуальное адресное пространство у каждого процесса своё. Почувствуйте термин - адресное пространство. Виртуальная память - это куча байт, с точки зрения программы идущих друг за другом. В физической памяти это пространство может разрываться, но операционка обеспечивает непрерывность виртуального адресного пространства с точки зрения программы.

Размер может быть не известен, но адрес-то должен... Или нет?
Нет. Когда вы говорите
C++
1
char *str_ptr = new char[16];
вы говорите операционке: "сделай мне где-нибудь 16 байт памяти, лежащих в моём виртуальном адресном пространстве друг за другом, и помести адрес на начало этого массива в переменную str_ptr.

Добавлено через 3 минуты
Цитата Сообщение от Hagrael Посмотреть сообщение
А где хранятся связки Вирт. адрес => Физ. адрес? В .tmp файле?
И может ли ОС выделить одной программе более 4 ГБ памяти? И зачем ОС такие колосальные объемы - 2 ГБ? И точно ли в Windows под начало выполнения программы выделяется 4 ГБ памяти? Может ли быть выделено меньше? А то у меня столько процессов, не верится, что на каждый уходит по 4 ГБ.
Таблица сопоставления адресов (так, кажется) находится в памяти ядра операционки. Не знаю на счёт винды, но unix'ы должны выделять одной программе более 4 гигов памяти. При начале выполнения программы ей выделяется меньше памяти, но страницы реальной памяти пришиваются к её виртуальной по мере необходимости. Ну и освобождаются, соответственно.

Добавлено через 1 час 10 минут
Цитата Сообщение от Hagrael Посмотреть сообщение
Виртуальная память - 16-ричное число, которое и содержится в указателе;
Нет, виртуальная память - это огромная последовательность байт, которые доступны программе для хранения в ней каких-либо значений. Программа втыкает эти значения в разные места виртуальной памяти. Указатель - это число, которое показывает, в каком месте виртуальной памяти находится начало объекта (переменной, структуры, массива...).

Виртуальная память с точки зрения программы непрерывна, а с точки зрения операционки, она фрагментирована, и фрагменты лежат в разных местах физической памяти, может даже не по порядку или даже в свопе. Операционка делает так, чтобы (1) программа не задумывалась о том, где реально находится её память и как к ней подобраться и (2) чтобы две программы сидели каждая в своём виртуальном адресном пространстве и не портили друг другу данные.

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