Comments (9)
Can you elaborate on this? Looking through the code it's not obvious what or where a failure would occur.
from ring-buffer.
Currently insert/removal uses copy constructors everywhere, (i.e. T a = b;
) which als means memory leak if T
is allocating anything.
from ring-buffer.
As I understand, this should work fine if the author of the class has properly implemented the copy assignment operator. For example, if T
is std::shared_ptr
, the copy assign would first decrement the usage count of the pointer held in a
and then increment the usage count of the pointer held in b
.
from ring-buffer.
copy assignment
ah, assignment, not constructor.
It will still leak until given slot is reused for new data, not to mention that the buffer array is uninitialized.
I'll add the assert until figuring out the std::move + rval refs and all of the related "what ifs".
from ring-buffer.
I think the slot would hold onto memory until reuse, but that’s much better than a leak because the buffer size is bounded.
Anyway thanks for the library!
from ring-buffer.
The copy assignment a = b
is ok if the copy assignment operator of type T
is implemented.
It is responsibility of the maintainer of type T
to ensure that current resources is freed before copy resources from others.
Is my understand correct?
from ring-buffer.
Currently the buffer array is uninitialized, so that will be very undefined operation.
This would also make the copy constructors unusable for it's intended purpose.
from ring-buffer.
Currently the buffer array is uninitialized, so that will be very undefined operation.
This would also make the copy constructors unusable for it's intended purpose.
I see. So, if the type can be default constructed, then it will be fine?
from ring-buffer.
As long as all members are also trivially (default) constructible.
from ring-buffer.
Related Issues (20)
- isnt std::atomic_thread_fence more appropriate ? HOT 1
- Generalize ring buffer, differentiate between atomic ring buffer non-atomic ring buffer HOT 1
- const consumerClear producerClear compile errors HOT 1
- unncessary void in parameter list HOT 1
- alignas(0) causes gcc warnings
- Multiple producers, a single consumer situation will produce a crash HOT 1
- How to use for multi-consumer multi-producer HOT 1
- Add way to remove arbitrary element HOT 1
- Implement iterator
- sometimes stuck on isempty function and cache padding HOT 11
- Does this ringbuffer thread safe? HOT 2
- Add find function HOT 1
- 警告 C26495 HOT 4
- readBuff(T*, size_t) never actually reads HOT 1
- "no wasted slots" is only true if you need power of 2 size
- There is a compiling error in Visual Studio 2015 on Windows 7 HOT 1
- As in the description, this is for embedded targents, can I use it for x86 PC? HOT 1
- peek() is not right
- Add template parameter to make it a overwriting ring buffer HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ring-buffer.