Hi,

I am a C++ developer and a modern-C++ enthusiast. In the interest of
modernizing the codebase, I propose using smart pointers to handle
dynamically allocated memory. I would like to get the feedback from
the developers if this change is planned/attempted/desirable or
inapplicable for CMake.

Currently, in the master branch (limiting to the Source directory):
- delete expression appears 127 times (2 of those are false positives).
    $ grep -Er 'delete(\[\])? \S+;' Source | wc -l
       127
- cmDeleteAll function (a helper to delete a Range of objects) is used 40 times.
    $ grep -Er 'cmDeleteAll\(.+\);' Source | wc -l
        40
- [Skipping the `free` stats. I can investigate that if required.]

Many of these are great candidates for `std::unique_ptr`. This can
reduce the destructors of many classes to default, and in some cases
achieve the rule of zero. This aligns well with the "Resource
management" section of the CppCoreGuidelines.
However, it might be impractical to replace some occurrences, like the
interfaces with C libraries.

I have pushed some sample commits to
https://gitlab.kitware.com/tusharpm/cmake/commits/smart_mem.

One drawback I noticed while changing some members to use smart
pointers is the boilerplate required to expose them to the callers.
There might be a cleaner way than passing references to smart
pointers. I would like to discuss those options also, if possible.

If this is something I can pursue, I would appreciate a review of my
changes to better suit the project.

Thanks,
Tushar
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake-developers

Reply via email to