0
當使用擋泥板調試我的程序,它會報告這個錯誤:擋泥板不合理報告內存訪問衝突
*******
mudflap violation 1 (unregister): time=1365083992.573241 ptr=0x20ce510 size=0
pc=0x7f745259d5f6
Nearby object 1: checked region begins 257B after and ends 257B after
mudflap object 0x20ce440: name=`malloc region'
bounds=[0x20cc4d0,0x20ce40f] size=8000 area=heap check=0r/0w liveness=0
alloc time=1365083992.572980 pc=0x7f745259da51
/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libmudflap.so.0(__mf_register+0x41) [0x7f745259da51]
/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libmudflap.so.0(__wrap_malloc+0xe2) [0x7f745259e752]
/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libstdc++.so.6(_Znwm+0x1d) [0x7f7452348f9d]
/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libstdc++.so.6(_Znam+0x9) [0x7f74523490b9]
number of nearby objects: 1
Neoprávněný přístup do paměti (SIGSEGV)
測試位之後,似乎
int *a[ 1000 ];
是合法的,而
int ** a = new int * [ 1000 ];
根據Mudflap不合法並生成上述錯誤。
第一個例子和第二個例子之間有什麼區別?
我可以解釋這種差異,但我無法解釋錯誤。 – 2013-04-04 14:15:42
@sftrabbit請繼續 – Josef 2013-04-04 14:20:31