I've heard there are some special addresses(or, at lease, some ranges with special addresses), used from Linux(or gcc, I don't know and this is a part of the question), but I can't find such. And I don't even know how to look for it.
( for example, in Visual Studio, there's such thing for uninitialized variables )
And this question was "introduced" by the more specific one (and it doesn't deserve to be a separate question, that's why I'll ask it here): is 0x30303030 some special address or something?
Because I have a backtrace like:
#0 0x003fa527 in memset () from /lib/tls/libc.so.6 #1 0x4e5fffa0 in ?? () #2 0x00787d13 in std::num_put > >::_M_group_int () from /usr/lib/libstdc++.so.6 #3 0x0079a1e4 in std::operator, std::allocator > () from /usr/lib/libstdc++.so.6 #4 0x30303030 in ?? () #5 0x30303030 in ?? () ... #1483 0x30303030 in ?? () #1484 0x30303030 in ?? () Cannot access memory at address 0xb3927000
And this have 1400+ lines like 0x30303030 in ?? ()
Does this mean something, or it's just a random memory address and it looks like a bottomless recursion? The problem is, that I cannot reproduce it, so debugging or using valgrind becomes useless :\
I know, that this is awful question with no any useful information, but I decided to give it a try.
In ASCII it's "0000", so it may be that something got overrun. Or that there's a memory error somewhere.
It's usually used by the debugger to mark uninitialized pointers. The addresses themselves are irrelevant and are not special in any way. Such a thing may not exist under GCC, depends on how they chose to write their debugger.
Seeing memset at the top of the backtrace, there are high odds that it didn't set the exact memory area you expected. Perhaps a bit too much was set to '0'?
User contributions licensed under CC BY-SA 3.0