Бросание исключения и кастомная аллокация
От: ankorol Украина  
Дата: 17.08.10 10:47
Оценка:
Добрый день.
Пишу софт для спецефической платформы (компилирую GNUARMом)- при использовании стандартного оперетора new приложение падает. Поэтому заместил стандартные операторы на свои.
Но при генерировании исключения внутри функции __сxa_alloc_exception выделяется память не через мои операторы, что приводит к падению. Как этого избежать?
Спасибо
Re: Бросание исключения и кастомная аллокация
От: uzhas Ниоткуда  
Дата: 17.08.10 10:55
Оценка: +1
Здравствуйте, ankorol, Вы писали:

A>при использовании стандартного оперетора new приложение падает.

вы пытались разобраться в причинах такого странного поведения?
Re: Бросание исключения и кастомная аллокация
От: Guard_h4s Россия  
Дата: 17.08.10 10:55
Оценка:
Здравствуйте, ankorol, Вы писали:

A>Но при генерировании исключения внутри функции __сxa_alloc_exception выделяется память не через мои операторы, что приводит к падению. Как этого избежать?

Может просто попробовать отключить исключения?
Re: Бросание исключения и кастомная аллокация
От: wander  
Дата: 17.08.10 11:04
Оценка:
Здравствуйте, ankorol, Вы писали:

A>Добрый день.

может
T * p = new(std::nothrow) T;

спасет отца русской демократии? p будет 0, если память выделить не удалось.
Re[2]: Бросание исключения и кастомная аллокация
От: ankorol Украина  
Дата: 17.08.10 11:45
Оценка:
Здравствуйте, uzhas, Вы писали:

U>вы пытались разобраться в причинах такого странного поведения?


Это особености платформы, в документации к этой платформе английским по белому написано не используйте тот new который мы вам поставляем, а переопределите его.
Re[2]: Бросание исключения и кастомная аллокация
От: ankorol Украина  
Дата: 17.08.10 11:46
Оценка:
Здравствуйте, Guard_h4s, Вы писали:

G_>Может просто попробовать отключить исключения?


А как же я тогда буду их бросать?
Re[2]: Бросание исключения и кастомная аллокация
От: ankorol Украина  
Дата: 17.08.10 11:48
Оценка:
Здравствуйте, wander, Вы писали:
W>может
W>
W>T * p = new(std::nothrow) T;
W>

W>спасет отца русской демократии? p будет 0, если память выделить не удалось.

Моя кастомная алокация работает отлично во всех местах где я использую new. Она не работает когда я делаю throw MyException(). Потому что где-то в рантайме (libstc++.a) падает на выделении памяти.
Re: Бросание исключения и кастомная аллокация
От: ankorol Украина  
Дата: 17.08.10 12:09
Оценка:
Всем спасибо,
Проблема исщезла при уменьшении размера локальных переменных функции, видимо памяти просто не хватило...
Re[2]: Бросание исключения и кастомная аллокация
От: alexeiz  
Дата: 17.08.10 14:15
Оценка:
Здравствуйте, ankorol, Вы писали:

A>Всем спасибо,

A>Проблема исщезла при уменьшении размера локальных переменных функции, видимо памяти просто не хватило...

Скорее стек исчерпался.
Re[3]: Бросание исключения и кастомная аллокация
От: ankorol Украина  
Дата: 18.08.10 06:11
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, ankorol, Вы писали:


A>>Всем спасибо,

A>>Проблема исщезла при уменьшении размера локальных переменных функции, видимо памяти просто не хватило...

A>Скорее стек исчерпался.


Да, именно стек, в хипе еще можно выделять и выделять.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re: Бросание исключения и кастомная аллокация
От: Ulitka США http://lazarenko.me
Дата: 10.09.10 21:45
Оценка:
Здравствуйте, ankorol, Вы писали:

Всем привет. Я хотел поставить Linux, но он почему-то у меня не работает, по-этому я решил написать свой...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.