Comments (5)
Definitely a problem! But I'm not sure what the 'right' behavior here would
be. sz
can't be 2^32 because that's too big to fit in 32 bits.
But I'm confused how this could occur in practice. Do you have a machine where
size_t is 32 bits but you can address more than 32 bits of memory? If not, how
are
youu planning to get more than 2^31 elements in your hashtable?
I'm trying to understand what the right thing to do here is. I could make sz
always
be 64 bits, but that seems wrong -- it should really be size_type. I guess I
could
just make construction fail somehow if you pass in something > |size_type| / 2?
What particular use-case brought this up?
Original comment by [email protected]
on 10 Dec 2009 at 12:47
- Added labels: Priority-Medium, Type-Defect
from sparsehash.
I'm not sure either what the right behaviour should be. When inserting a delete
key the hashtable fails with an
assert, perhaps this would also be an option here.
This came up by accident, I was initializing the hashtable with an unspecified
value (doh!) and it happened to
be initialized with 3.2 billion. The program was unresponsive and I had no idea
why until I debugged it,
getting a crash would have told me where the problem was.
I don't think there is a valid use case for asking for more than 2^31 elements
in your table, since they would
have to occupy 4 bytes each (otherwise there aren't enough distinct ones to
fill the table), in which case you've
exhausted the memory. So in my opinion, failing with an assert is the best
thing to do in this situation.
Original comment by [email protected]
on 10 Dec 2009 at 5:02
from sparsehash.
Gotcha. Makes sense to me. I'll add an overflow assert() in the next release,
so at
least in debug mode you'll die rather than go into an infinite loop.
Original comment by [email protected]
on 10 Dec 2009 at 7:18
from sparsehash.
Original comment by [email protected]
on 10 Dec 2009 at 7:19
- Changed state: Started
from sparsehash.
This should be resolved in sparsehash 1.6, just released.
Original comment by [email protected]
on 11 Jan 2010 at 10:53
- Changed state: Fixed
from sparsehash.
Related Issues (20)
- Fix the compile problem's on llvm(macosx) HOT 1
- Call resize to preallocate for memory does not work
- SPARSEHASH_COMPILE_ASSERT HOT 2
- Repair compilation with clang
- Installation fails check on Red Hat 6
- Installation fails at "make" step on Red Hat Linux 6
- make check fails with GCC 4.9 on Mac OS 10.10.1
- [PATCH] Make dense_hash_map work with non-default-constructible values HOT 1
- Is it thread safe for insertion of sparse hash table? HOT 1
- Google Code is dying
- Memory Corruption HOT 2
- Compile fails on up-to-date Fedora 18 system HOT 2
- Insert deleted key into hashmap will cause size() be increased
- Cannot compile sparsehash-2.0.2 on Ubuntu 12.04LTS
- [PATCH] Fix gcc warning: format '%p' expects argument of type 'void*'
- news page specifies wrong date
- clang compile failure on FreeBSD HOT 3
- failure during "make" of sparsehash on mac osx 10.8.5 HOT 1
- Please implement a check for try in case libstdc++ implements c++11 where tr1 is merged into std HOT 4
- Latest version of xcode Command Line tools breaks sparsehash. HOT 6
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 sparsehash.