Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.12.2015, 17:21
|
|||
|---|---|---|---|
new/delete и несколько рантаймов С++ |
|||
|
#18+
Есть EXE, который использует какой-то рантайм (msvcrt.dll) В нем грузится моя DLL, которую я собрал в MSVC 2015 со статической линковкой (/MT) чтобы лишние DLL с собой не тащить. Будут ли проблемы с выделением памяти, если я буду использовать new/delete или malloc()/free() в коде DLL ? Еще хочу немного STL задействовать (map, vector) Это все внутри кода DLL, т.е. DLL сама выделила, сама освободила. Нет такого что в DLL память выделилась, а в EXE освобождается и наоборот. Засомневался, вроде должно быть все нормально, но вдруг что-то недопонимаю. Раньше эту DLL компилировал в MSVC6, поэтому использовалась та же msvcrt.dll поэтому проблемы не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2015, 18:34
|
|||
|---|---|---|---|
new/delete и несколько рантаймов С++ |
|||
|
#18+
Dima TЕсть EXE, который использует какой-то рантайм (msvcrt.dll) В нем грузится моя DLL, которую я собрал в MSVC 2015 со статической линковкой (/MT) чтобы лишние DLL с собой не тащить. Будут ли проблемы с выделением памяти, если я буду использовать new/delete или malloc()/free() в коде DLL ? Еще хочу немного STL задействовать (map, vector) Нарушение ODR, будут, будут проблемы.... Dima TЭто все внутри кода DLL, т.е. DLL сама выделила, сама освободила. Нет такого что в DLL память выделилась, а в EXE освобождается и наоборот. Засомневался, вроде должно быть все нормально, но вдруг что-то недопонимаю. Раньше эту DLL компилировал в MSVC6, поэтому использовалась та же msvcrt.dll поэтому проблемы не было. Ну, это немного лучше, но на самом деле в коде далеко не всегда удаётся 100% но отследить все выделения и удаления памяти. Так что рискуешь. Главное -- зачем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2015, 18:59
|
|||
|---|---|---|---|
|
|||
new/delete и несколько рантаймов С++ |
|||
|
#18+
Dima T...т.е. DLL сама выделила, сама освободила. Нет такого что в DLL память выделилась, а в EXE освобождается и наоборот... IMHO & AFAIK Все нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.12.2015, 19:02
|
|||
|---|---|---|---|
new/delete и несколько рантаймов С++ |
|||
|
#18+
MasterZivГлавное -- зачем ? EXE это Visual FoxPro. Тут я никак не могу пересобрать EXE. Вариант собирать DLL в MS VC 6 возможен, но хочется большего :) DLL это набор функций, которые я из фокса использую. В коде DLL восновном WinAPI и немного C/C++. Все однопоточно. Никаких третьих библиотек не используется (MFC, ATL и т.д.) По сути это обертка над WinAPI т.к. из фокса что-то неудобно напрямую вызывать, что-то для ускорения. MasterZivна самом деле в коде далеко не всегда удаётся 100% но отследить все выделения и удаления памяти. Отследить дело десятое, этих выделений 2-3 штуки всего. Плюсом хочу некоторые велосипеды на STL переписать. Главное чтобы каких-то конфликтов не возникло из-за этого. Немного потестил - работает. Как понимаю каждый рантайм делает VirtualAlloc() и живет каждый со своим куском памяти. Или все-таки могут пересечься? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.12.2015, 14:14
|
|||
|---|---|---|---|
new/delete и несколько рантаймов С++ |
|||
|
#18+
EXE это Visual FoxPro. Тут я никак не могу пересобрать EXE. Вариант собирать DLL в MS VC 6 возможен, но хочется большего :) тебе не надо пересобирать приложение, тебе надо собирать твою dll с тем же crt, что и приложение. Главное чтобы каких-то конфликтов не возникло из-за этого. Немного потестил - работает. Как понимаю каждый рантайм делает VirtualAlloc() и живет каждый со своим куском памяти. Или все-таки могут пересечься? не могут, естественно. есть еще вариант другой, не использовать crt в dll вообще, использовать только свои функции и WIN API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.12.2015, 14:19
|
|||
|---|---|---|---|
|
|||
new/delete и несколько рантаймов С++ |
|||
|
#18+
MasterZivтебе не надо пересобирать приложение, тебе надо собирать твою dll с тем же crt, что и приложение. Он же сказал, что не собирается выделять память в одном модуле, а освобождать в другом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.12.2015, 14:43
|
|||
|---|---|---|---|
new/delete и несколько рантаймов С++ |
|||
|
#18+
Всем спасибо за ответы. Понял что должно работать. Место не критичное. Если вдруг какие-то проблемы начнутся - всегда можно вернутся к старому рантайму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.01.2016, 15:23
|
|||
|---|---|---|---|
new/delete и несколько рантаймов С++ |
|||
|
#18+
Dima TВсем спасибо за ответы. Понял что должно работать. Место не критичное. Если вдруг какие-то проблемы начнутся - всегда можно вернутся к старому рантайму. оно не должно работать, оно может работать иногда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.01.2016, 15:31
|
|||
|---|---|---|---|
|
|||
new/delete и несколько рантаймов С++ |
|||
|
#18+
MasterZivоно не должно работать С какого перепугу? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.01.2016, 13:43
|
|||
|---|---|---|---|
|
|||
new/delete и несколько рантаймов С++ |
|||
|
#18+
Dimitry Sibiryakov, присоединяюсь. Писал DLL под FoxPro (2.6 dos/windows), MS Access, Oracle Forms, Adobe, Java и еще какой-то софт... только два раза пришлось с версией Runtime заворачиваться: 1) когда FLL (FoxPro 2.6 dos/windows) собирал, API от FoxPro 2.6 требовало MS Visual C 6.0 (не Visual Studio, а VC 6.0 на дискетах под Dos/Windows 3.1 ))) ) 2) и когда использовал PRO*C из-под Oracle Forms (нужно было одну и ту-же сессию/connect использовать и в host приложении и в dll). Пришлось в Oracle Co. обращаться, что бы нужную версию PRO*C выслали. Никаких проблем с не совместимостью runtime не наблюдал. Например связка Oracle Forms 6.0 (MS runtime) и DLL (Delphi/Borland C++ Builder) вполне себе в продакшене пару лет работала. Там и new/delete, и создание окон/форм и коннекты к БД. Потом была на MS VS переписана, что бы много-мегабайтный рантайм Borland'а из проекта убрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2018660]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 266ms |

| 0 / 0 |
