マッドフラップを使用してプログラムをデバッグすると、次のエラーが報告されます。
*******
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 によると合法ではなく、上記のエラーが生成されます。
最初の例と 2 番目の例の違いがあるとすれば、それは何ですか?