Здравствуйте, _Sheff_, Вы писали:
_S_>Здравствуйте, просьба помочь разобраться с маленьким кодом. Windows XP, Borland C++ 5
_S_>Есть dll, с классом(скомпиллирована без untime packages & dynamic RTL)
_S_>_S_>.
_S_>.
_S_>.
_S_>#include <windows>
_S_>#include <stdlib>
_S_>#include <conio>
_S_>#include <stdio>
_S_>#include <iostream>
_S_>#include <system.hpp>
_S_>#include <vector>
_S_>using namespace std;
_S_>class __EXPORT_TYPE CDecoder
_S_>{
_S_> public:
_S_> CDecoder();
_S_> void Decode(AnsiString Data);
_S_> bool Get_Integrity_Status();
_S_> //private:
_S_> AnsiString Rec_String;
_S_> vector<AnsiString> Decoded_Words;
_S_> bool String_Integrity;
_S_>};
_S_>.
_S_>.
_S_>.
_S_>.
_S_>
_S_>Подсоединяю ее к приложению, создаю обьект из длл-ки
_S_>_S_>void __fastcall TForm1::Button1Click(TObject *Sender)
_S_>{
_S_>CDecoder *Decoder;
_S_>Decoder = new CDecoder;
_S_>.
_S_>.
_S_>.
_S_>delete Decoder; //выдает ошибку Invalid pointer operation
_S_>.
_S_>.
_S_>
_S_>Специально проверил, удаление вызывается только один раз.если оператор delete убрать — ошибок нет. Хотелось бы узнать это нормально или я где-то ошибку допустил?
_S_>благодарю за помощь,извините если вопрос может быть поставлен несколько криво...я просто в программировании не профи,- учусь пока...
Я не проверял, но мне кажется что проблемма такая:
new виделяет память на heap который принадлежит dll
a delete стирает память, которая принадлежит твоему процессу
попробуй изменить определение проекта, не знаю где в Borland,
но в VC ето ProjectSettings -> C++ ->
Use run time library = Multithreaded DLL / Debug Multithreaded DLL