Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Firework
64 / 88 / 23
Регистрация: 01.04.2013
Сообщений: 601
#1

Проецируемые в память файлы - C++

06.10.2013, 22:45. Просмотров 1151. Ответов 5
Метки нет (Все метки)

В студии компилируется такой код
C++
1
2
3
4
5
6
int main()
{
    char* buf = new char[1024*1024*2047];
    system("pause>0");
    return 0;
}
а вот такой нет
C++
1
2
3
4
5
6
int main()
{
    char* buf = new char[1024*1024*2048];
    system("pause>0");
    return 0;
}
error C2148: общий размер массива не должен превышать 0x7fffffff байт
Т.е. больше 2гб не выделяет.
Слышал, что можно решить эту задачу проецированием файлов, Только не совсем ясно как применить проецирование в решении этой задачи.
Приведите, пожалуйста, пример.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2013, 22:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проецируемые в память файлы (C++):

Статическая память,Динамическая память. - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними - C++
Всем добрый вечер!) Относительно недавно стал изучать c/c++, хочу полюбопытствовать ,так как появился вопрос. Почему при объявлении...

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? - C++
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

Зачем нужно добавлять файлы в файлы исходного кода - C++
Зачем нужно добавлять файлы в файлы исходного кода (кроме main.cpp)? И как вызвать из main.cpp другой файл?

Realloc выделяет память для массива int и не выделяет память для массива double - C++
Скажите пожалуйста, почему вот этот код работает: #include <iostream> #include <windows.h> using namespace std; int main()...

Заголовочные файлы и файлы cpp - C++
Со временем сложилось представление что при написании программ стоит разделять МЕТА данные и данные, но для лучшего понимания своих...

5
Убежденный
Ушел с форума
Эксперт С++
15701 / 7211 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
06.10.2013, 22:47 #2
В 32-битный процесс можно спроецировать область максимум ~2 Гигабайта.
Это ограничение архитектуры.
1
Firework
64 / 88 / 23
Регистрация: 01.04.2013
Сообщений: 601
06.10.2013, 22:56  [ТС] #3
а какой смысл тогда в проецировании?
0
Убежденный
Ушел с форума
Эксперт С++
15701 / 7211 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
06.10.2013, 22:59 #4
Спроецированный в память файл можно использовать для обмена данными
между процессами, и в Windows это наиболее эффективный способ.
Кроме того, необязательно ведь отображать весь файл целиком, можно
отобразить только часть.
0
Firework
64 / 88 / 23
Регистрация: 01.04.2013
Сообщений: 601
06.10.2013, 23:09  [ТС] #5
Цитата Сообщение от Убежденный Посмотреть сообщение
Спроецированный в память файл можно использовать для обмена данными
между процессами
можно пример?
0
Убежденный
Ушел с форума
Эксперт С++
15701 / 7211 / 1139
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
06.10.2013, 23:21 #6
Один процесс создает отображение с помощью CreateFileMapping, а затем
проецирует его в память - MapViewOfFile(Ex). Второй процесс открывает
отображение (OpenFileMapping) и тоже выполняет проекцию.
В результате получается, что страницы виртуальной памяти разных
процессов отображаются на одни и те же физические адреса - все, что
один процесс запишет в такую память, немедленно станет "видно" второму.

Пример из MSDN:
Creating Named Shared Memory
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
1
06.10.2013, 23:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2013, 23:21
Привет! Вот еще темы с ответами:

Раздельная компиляция: что помещать в заголовочные файлы, а что в файлы реализации (исходники)? - C++
Здравствуйте, я учусь пользоваться Visual Studio.Пишу программу, в которой создаются и разрушаются объекты, определенного пользователем...

Файлы проецируемые в память - C++ WinAPI
Здравствуйте, вопрос состоит вот в чём. Одного проецирования в память недостаточно, преподаватель сказал, что необходимо продемонстрировать...

Файлы проецируемые в память - C++ WinAPI
const LPCWSTR testfile = L"testfile.txt"; LPCWSTR test1 = L"test simple text"; // Длина 16, "вес" = 32 SIZE_T size =...

Межпроцессный обмен. Файлы, проецируемые в память - C++ WinAPI
Всем привет, очень стыдно просить, но нет выбора... есть задание: Продемонстрировать использование файла отображаемого в память для...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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