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

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

Войти
Регистрация
Восстановить пароль
 
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 73
#1

Могут ли два приложения пользоваться одной и той же выделенной памятью? - C++

18.03.2014, 09:34. Просмотров 319. Ответов 7
Метки нет (Все метки)

День добрый! С помощью FileMapping, в ActiveX компоненте, создана область в памяти куда копируются объекты (текстуры и файлы STL). Эти объекты содержат указатели на элементы созданные в выделяемой памяти. Объекты копируются туда чтобы несколько программ обращались к одной области памяти для загрузки текстур и файлов STL что значительно сокращает объем занимаемой программой памяти. Так вот проблема состоит в том что первая запущенная программа запускается нормально, а следующие программы нет из-за того что объекты в выделенной памяти просто исчезают. Они то ли затираются либо просто недоступны другой программы. Объекты копируются в область FileMappinga с помощью memcpy. Смещения между объектами посчитаны (вроде как) правильно. Так может ли что бы две программы обращаться к одной и той же выделанной памяти??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2014, 09:34     Могут ли два приложения пользоваться одной и той же выделенной памятью?
Посмотрите здесь:

Почему в данном случае работа с заранее выделенной памятью медленнее чем с динамической? - C++
Написал функцию которая на основе списка выделяет память и при каждом вызове возвращает указатель на следующий элемент для объекта. Код...

Другие не могут пользоваться моей программой - C++
Создал консоль приложение. Скомпилировал. Поделился своим приложением, то есть ехе. файлом. Но у других почему-то выдает ошибку. В чем...

Как склеить два куска динамически выделенной памяти? - C++
Есть такой код char *arr = (char *) malloc(1); char *plus = (char *) malloc(25); arr = memcpy(arr + 1, plus, 25); Вопрос: можно ли...

Коды символов одной и той же буквы различаются. [help] - C++
тоесть если я делаю cout<<int('а'); где а-русская, он выводит код -32. И так до я -1; а если char c; cin>>c; cout<<int(c) и...

Вывести слова которые начинаются с одной и той же буквы - C++
как в структуре, вывести слова которые начинаются с одной и той же буквы? можете реализовать это в коде?

Вывести слова, начинающиеся и заканчивающиеся одной и той же буквой - C++
Помогите пожалуйста с задачкой!!! Разработать алгоритм и программу. Вводится тест из заглавных и строчных латинских букв, пробелов....

Найти те слова, которые начинаются и заканчиваются одной и той же буквой - C++
1_Символьная строка заканчивается восклицательным знаком (!). Слова в ней отделены друг от друга точкой с запятой (;). Найти те слова,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,726
18.03.2014, 09:59     Могут ли два приложения пользоваться одной и той же выделенной памятью? #2
Цитата Сообщение от МихаилХ Посмотреть сообщение
Могут ли два приложения пользоваться одной и той же выделенной памятью?
могут
но не напрямую
для винды это реализуется или через Dll или через "Файлы, проецируемые в память"
http://cppclub.newmail.ru/articles/win32_35.html
http://ru.wikipedia.org/wiki/Отображение_файла_в_память
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 73
18.03.2014, 10:22  [ТС]     Могут ли два приложения пользоваться одной и той же выделенной памятью? #3
Про проецируемые в память файлы я знаю, ими то я и пользуюсь. Суть вопроса то не в этом, я наверное криво написал. Повторю по подробней у меня в память FileMapping копируются объекты содержащие в себе указатели на элементы в динамической памяти. Первая запущенная программа содержимое этих областей видит, то есть там содержаться нужные данные и в целом все хорошо. А вот вторая программа по тому же самому указателю данных не видит то есть там пусто (мусор). Соответственно и вопрос в том что или делать так, как делаю я, не правильно, или у меня все таки где то эта память затирается, или, вообще, два процесса не могут обращать к одной и той же динамической памяти.

Добавлено через 6 минут
Если требуется код программы, я его приведу.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,726
18.03.2014, 11:30     Могут ли два приложения пользоваться одной и той же выделенной памятью? #4
Цитата Сообщение от МихаилХ Посмотреть сообщение
Суть вопроса то не в этом, я наверное криво написал. Повторю по подробней у меня в память FileMapping копируются объекты содержащие в себе указатели на элементы в динамической памяти. Первая запущенная программа содержимое этих областей видит, то есть там содержаться нужные данные и в целом все хорошо. А вот вторая программа по тому же самому указателю данных не видит
и не будет видеть
поскольку каждому процессу Виндос выделяет свою память
грубо говоря это разные компьютеры
представь что два компьютера связаны в сеть и один передает другому указатели на свою память

выход в проецируемый файл заносить не указатели а сами объекты

Добавлено через 2 минуты
могу по другому объяснить
представь что у тебя не проецируемый файл а обыкновенный
записал указатели в файл, вышел, снова вошел, и считал файл
куда будут указывать эти указатели?
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 73
18.03.2014, 11:34  [ТС]     Могут ли два приложения пользоваться одной и той же выделенной памятью? #5
Спасибо! Теперь понятно! =)
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,726
18.03.2014, 11:36     Могут ли два приложения пользоваться одной и той же выделенной памятью? #6
теоретически один процесс может видеть память другого
для этого нужно приатачится к процессу
но путь этот скользкий, много тонкостей
и нужно хорошее знание архитектуры системы, шаг влево- вправо и процесс рухнул
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
18.03.2014, 14:08     Могут ли два приложения пользоваться одной и той же выделенной памятью? #7
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Добавлено через 2 часа 6 минут
ValeryS, Не пугайте так людей . Не всё там так сложно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2014, 14:10     Могут ли два приложения пользоваться одной и той же выделенной памятью?
Еще ссылки по теме:

Определить количество слов начинающихся и оканчивающихся одной и той же буквой - C++
Дан текст. Определить количество слов начинающихся и оканчивающихся одной и той же буквой как будет код?

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

Определить количество слов, начинаются и заканчиваются одной и той же буквой - C++
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, начинаются и...

Найти количество слов начинающихся и заканчивающихся одной и той же буквой - C++
Ребята, очень нужна помощь...помогите решить и разобраться с задачей по строкам...вот условие.. Дана строка, состоящая из русских слов,...

Могут ли два автобусных билета подряд быть удачными? - C++
Назовем шестизначный автобусный билет удачным, если сумма его цифр делится на 7. Могут ли два билета подряд быть удачными?


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

Или воспользуйтесь поиском по форуму:
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 73
18.03.2014, 14:10  [ТС]     Могут ли два приложения пользоваться одной и той же выделенной памятью? #8
Спасибо! На самом деле такая работа с память как хождение по тонкому льду =)
Yandex
Объявления
18.03.2014, 14:10     Могут ли два приложения пользоваться одной и той же выделенной памятью?
Ответ Создать тему
Опции темы

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