new / delete в UDF

2011-11-17 Пенетрантность Vladimir
Здравствуйте!

При попытке в Linux использовать UDF, собранную в gcc, столкнулся со
следующим:

  long* aTestItem = new long;
  delete aTestItem;

вызывает ошибку Segmentation fault на операторе delete.

В Windows все проходит без ошибок.

Если библиотеку использовать не в UDF, а вызывать из простого
тестового приложения, все проходит без ошибок и в Linux.

Есть ли возможность использовать в UDF в Linux операторы new / delete?

Речь идет не о возвращаемом результате, все происходит внутри UDF.

Если заменить new / delete на malloc / free, ошибки не возникает.
Но в UDF требуется работать с классами.
Как вариант, рассматриваю возможность размещать экземпляры классов по
malloc с последующим явным вызовом конструкторов.
Но используемая система классов достаточно громоздкая.
Кроме того, хотелось бы минимизировать отличия между Windows и Linux
версиями.

Поэтому вопрос для меня очень насущный.

Есть ли возможность использовать в UDF в Linux операторы new / delete?

С уважением, Владимир.


Re: new / delete в UDF

2011-11-17 Пенетрантность Khorsun Vlad

Vladimir ...

Здравствуйте!

При попытке в Linux использовать UDF, собранную в gcc, столкнулся со
следующим:

 long* aTestItem = new long;
 delete aTestItem;

вызывает ошибку Segmentation fault на операторе delete.


   Насколько я помню, нужно явно сказать линкеру не экспортировать
из .so всё подряд.

--
Хорсун Влад