Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对于Linux或gcc,是否有一些带有特殊(内存)地址的列表?_C++_Linux_Memory_Gcc - Fatal编程技术网

C++ 对于Linux或gcc,是否有一些带有特殊(内存)地址的列表?

C++ 对于Linux或gcc,是否有一些带有特殊(内存)地址的列表?,c++,linux,memory,gcc,C++,Linux,Memory,Gcc,我听说Linux(或gcc,我不知道,这是问题的一部分)中使用了一些特殊地址(或者,至少,一些具有特殊地址的范围),但我找不到这样的地址。我甚至不知道怎么找 (例如,在VisualStudio中,对于未初始化的变量有这样的功能) 这个问题是由一个更具体的问题“引入”的(它不应该是一个单独的问题,这就是为什么我会在这里问它):0x30303030是一个特殊的地址还是什么 因为我有一个回溯,比如: #0 0x003fa527 in memset () from /lib/tls/libc.so.6

我听说Linux(或gcc,我不知道,这是问题的一部分)中使用了一些特殊地址(或者,至少,一些具有特殊地址的范围),但我找不到这样的地址。我甚至不知道怎么找

(例如,在VisualStudio中,对于未初始化的变量有这样的功能)

这个问题是由一个更具体的问题“引入”的(它不应该是一个单独的问题,这就是为什么我会在这里问它):0x30303030是一个特殊的地址还是什么

因为我有一个回溯,比如:

#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 #/lib/tls/libc.so.6中的memset()中0 0x003fa527 #1 0x4e5fffa0英寸??() #在/usr/lib/libstdc++.so.6的std::num_put>>::\M_group_int()中的2 0x00787d13 #来自/usr/lib/libstdc++.so.6的std::operator、std::allocator>()中的3 0x0079a1e4 #4 0x30303030英寸??() #5 0x30303030英寸??() ... #1483 0x30303030英寸??() #1484 0x30303030英寸??() 无法访问地址为0xb3927000的内存 这有1400多行,比如
0x30303030英寸??()

这是否意味着什么,或者它只是一个随机内存地址,看起来像一个无底递归?问题是,我无法复制它,因此调试或使用valgrind变得毫无用处:\


我知道,这是一个可怕的问题,没有任何有用的信息,但我决定试一试。

在ASCII中,它是“0000”,所以可能是有什么东西超限了。或者某个地方有内存错误。

调试器通常使用它来标记未初始化的指针。地址本身是无关的,在任何方面都不是特别的。这种情况在GCC下可能不存在,这取决于他们选择如何编写调试器。

看到memset位于回溯的顶部,很有可能它没有设置您期望的确切内存区域。也许设置为“0”有点太多?

我知道,它是“0000”,但这些十六进制数不是都是内存地址吗?“0000”是什么特殊地址?“内存错误”是什么意思?内存地址只是字节序列,和其他字节一样。“内存错误”的意思就是它在内存中的物理错误:我不知道,我甚至不知道问题从哪里开始(它是成千上万的应用程序,多线程,而核心没有任何说明……),我们也不使用这样的(C)函数,这个应用程序是用C++编写的。因此,我想这与一些
std::string
有关,或者我不知道:\n这很奇怪,我没有看到任何东西,可以帮助我重现、隔离或定位问题