0
Shared pointer implementation
template<class T> class sharedptr { T* res; int* counter; }; If above is my code sample class to implement own shared pointer, Am i missing anything else? res is holding actual resource to be managed and counter is related to control block. control block is needed on heap as each object will have same memory location to increment or decrement the counter value. What else I am missing? Is anything else as a member variable is needed? One of my friend faced this feedback in interview that something is missing to be taken care , but not sure what it is.
5 odpowiedzi
+ 1
thread safe custom shared ptr is tricky. here is a link I found that uses atomic reference counter.
https://github.com/yalekseev/shared_ptr/tree/master
I copy-pasted the code in Sololearn's codebit, deleted the namespaces, added the test.cpp, did some personal preference changes and corrected some errors in the tests, and it seems to run ok. The asserts are passing.
https://sololearn.com/compiler-playground/cp6oAMHtyGBF/?ref=app
it doesn't implement weak pointer, though... that would be another bit of complication. But one should never expect these things to be simple...
+ 1
Thanks. Will take a look
0
I got two information from other friend as below :
1. It should handle multithread. Hence int* should take care of multiple thread either by mutex or atomic<int> or atomic<int*>
2. Along with shared pointer strong counter, it should have weak pointer counter to check whether object block has expired or not through control block. More details of this second point as below:
https://stackoverflow.com/questions/49585818/why-does-shared-ptr-needs-to-hold-reference-counting-for-weak-ptr
0
😂😂🤣
0
There doesn't seem to be a multi threading test. How would you do that?