-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove stl extensions #59
Comments
So, the task is to remove xr_new and xr_delete and such?) |
No, the task is to remove xr containers and make them as normal stl containers. I see them as a type redefinition. For example, xr_vector is exactly the same as std::vector. However, xr_vector uses custom allocator (xalloc) to get memory from xr_memory, while stl uses allocator which calls new operator, and new operator is already being overloaded and pointing to xr_memory. Hopefully, now it is more clear :) |
new operator overloading is defined in the xrMemory.h |
@Xottab-DUTY I tested it in one of my projects, and it does not matter when you include a header with implementation of a new operator, it will always work. Even when the program starts, any allocation is going through my new operator. However, I tested it only with static linking, and don't know the behavior with dynamic linking. |
xr_delete не советую трогать. В движке не всегда переменные получают значения, придется проверять на их наличие. |
xr_delete и не придется трогать, только контейнеры xr_vector, xr_string... |
Ахаха. Спрашивается, а что же это мы, хлопцы, на английском-то разговариваем, коли все тут по-русски балакають?)) Хотя, конечно, понятно зачем) |
Чтобы всем было понятно :) |
Global operator new overloading is pretty simple, you should define it in one of the TUs and that's all, there is no need to include its definition into every TU.
Он только на null проверяет же, а это делает и стандартный delete, только видимо в gsc никто об этом не знал |
xr_delete, xr_new, xr_special... в принципе они все могут быть убраны и заменены обычным new и delete, так как они просто повторяют их работу. |
@Im-dex, да, только с учётом перегрузок delete в xray, я ловил исключения, когда делал отказ от xr_delete. Поэтому сейчас частично ушёл от xr_new и только. |
скорее всего new и delete сломаны так как они в хедере,перенеся их в имплеменатцию, я получаю совсем другое поведение. И это все из за того что кто решил не смотреть на предупреждения и написать |
@jazzvaz если переносить в цппшник, то нужно убирать inline + это должно быть сделано для каждого dll проекта |
@Im-dex это понятно на счет inline. Для каждого dll проекта нужен operator new? |
@jazzvaz Да, в каждом нужно переопределять, иначе дефолтный будет использоваться |
@Im-dex еще один плюс к статичным библиотекам |
@jazzvaz Ну да, в этом плане с ними все сильно проще |
А чем плох дефолт для рентгена? Не у ПК, переопределения не помню. |
@ForserX дефолтный идет к малоку за памятью, а не к xr memory у которого своя система распределения памяти |
У нас в OpenXRay tamlin-mike вынес new, delete в отдельную статическую библиотеку. Честно говоря, я не проверял, но, вроде бы, оно таким образом переопределяется везде.... Надо будет проверить.... |
@Xottab-DUTY можно ссылку пожалуйста или какой иммено репозиторий? |
@jazzvaz мой форк OpenXRay. Либо в оригинальном репозитории можешь посмотреть ветку speedup. Добавлено позже: |
Stl allocator uses new operator, which is already overloaded and pointing to xr memory. Therefore, both xr and stl allocators using same memory resources.
The text was updated successfully, but these errors were encountered: