Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 598
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите, вот я создаю объект CArrayObj, добавляю в него другие объекты. Сами объекты мне ещё нужны. А этот объект-список мне можно удалить.
Мне каким методом убрать из него объекты перед удалением? Detach() или Delete()?
Или Clear() / Shutdown() ?
У Вас путаница из-за не понимания как выделяется память и как с ней нужно работать. В общем случае ни CArrayObj ни объекты располагающиеся в нем, удалять в ручную не нужно.
Я передаю в функцию класса объект, ссылку на него, чтобы с ним произошли действия в функции, а затем вернулся бы он. А сам объект класса мне более не нужен... Вот как мне его удалить?
Примерно так. Вот я как test_class удаляю, мне пишет Invalid pointer при следующей итерации...
Как мне удалить test_class, не удаляя переданного в него объекта?
У Вас путаница из-за не понимания как выделяется память и как с ней нужно работать. В общем случае ни CArrayObj ни объекты располагающиеся в нем, удалять в ручную не нужно.
Ну если я создал массив объектов. То есть объект массива ArrayObj, проделал с ним необходимые действия. Затем мне этот объект не нужен, а сами объекты внутри (члены массива) нужны, я же должен удалить этот объект массива?
Этот ув Ihor Herasko дотянет до выходных, а на выходных его нет ; )
с прошлого четверга вопросы висят! : )
я всё-таки отвечаю за свои отзывы, а Вам я дал хороший отзыв, будьте милы, закончите Вашу игру а-ля "отвечаю на 1 вопрос в день", потому что я не в восторге от ожидания, и отзыв я свой корректировать не очень хочу. такими темпами мне придется ждать всю следующую неделю, а мне нужно сову отдавать фрилансеру на доработку ; )Я передаю в функцию класса объект, ссылку на него, чтобы с ним произошли действия в функции, а затем вернулся бы он. А сам объект класса мне более не нужен... Вот как мне его удалить?
Примерно так. Вот я как test_class удаляю, мне пишет Invalid pointer при следующей итерации...
Как мне удалить test_class, не удаляя переданного в него объекта?
Нужно избегать создания указателей на объекты. Вместо этого работайте с объектами непосредственно на стеке функции:
Т.к. test_object гарантированно содержит объекты CTestObject (вы же ничего кроме этих объектов туда не добавляли, правда?:) То код можно еще упростить, убрав проверку приведения:
Ну и совсем коротко:
Ну если я создал массив объектов. То есть объект массива ArrayObj, проделал с ним необходимые действия. Затем мне этот объект не нужен, а сами объекты внутри (члены массива) нужны, я же должен удалить этот объект массива?
Вы не понимаете назначение CArrayObj. Это владелец объектов, которые Вы в него размещаете. Удалите CArrayObj тогда и объекты, которые Вы в него разместили также удалятся. Раз ArrayObj владелец этих объектов, то он же является их менеджером - контролирует ссылки на объекты и в автоматическом режиме удаляет все выделенную память в случаи, когда коллекция больше не нужна. Поэтому Вам не нужно ничего осовобождать и использовать оператор delete. Все делает сам CArrayObj. Сам CArrayObj практически не занимает памяти в компьютере (несколько десятков байт) и поэтому стремится к его удалению бессмысленно.
Вы не понимаете назначение CArrayObj. Это владелец объектов, которые Вы в него размещаете. Удалите CArrayObj тогда и объекты, которые Вы в него разместили также удалятся. Раз ArrayObj владелец этих объектов, то он же является их менеджером - контролирует ссылки на объекты и в автоматическом режиме удаляет все выделенную память в случаи, когда коллекция больше не нужна. Поэтому Вам не нужно ничего осовобождать и использовать оператор delete. Все делает сам CArrayObj. Сам CArrayObj практически не занимает памяти в компьютере (несколько десятков байт) и поэтому стремится к его удалению бессмысленно.
Однако потом ошибки undeleted objects CArrayObj
Однако потом ошибки undeleted objects CArrayObj
Значит накосячили с CArrayObj. Вместо: CArrayObj test_objects; Написали: CArrayObj* test_objects, а диструктор для него забыли сделать; Возможно неправильно сконфигурировали модель памяти по работе с CArrayObj. Может просто с указателями перемудрили. Диагноз однозначный: использование указателей там, где они не нужны, часто приводит к утечкам.
Здравствуйте!
Подскажите пожалуйста как перенести курсор ,скажем на 7 строчку в текстовом документе,для извлечения подстроки уже с этой позиции...
Что будет быстрее-много текстовых файлов с одной строкой или один файл с большим количеством строк?
Значит накосячили с CArrayObj. Вместо: CArrayObj test_objects; Написали: CArrayObj* test_objects, а диструктор для него забыли сделать; Возможно неправильно сконфигурировали модель памяти по работе с CArrayObj. Может просто с указателями перемудрили. Диагноз однозначный: использование указателей там, где они не нужны, часто приводит к утечкам.
А где они нужны вообще? Какой смысл в их использовании, если можно просто объявлять объекты?