Comment trouver une erreur de tableau hors limites ?
我想大声告诉你
我想大声告诉你 2017-06-07 09:24:17
0
2
992
(gdb) bt
#0  0x000000368d275fd5 in malloc_consolidate () from /lib64/libc.so.6
#1  0x000000368d279c28 in _int_malloc () from /lib64/libc.so.6
#2  0x000000368d27ab1c in malloc () from /lib64/libc.so.6
#3  0x000000368debd09d in operator new(unsigned long) () from /usr/lib64/libstdc++.so.6
#4  0x000000000040fbcd in __gnu_cxx::new_allocator<unsigned char>::allocate (this=0x7ffc7e0136d8, __n=4096)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/new_allocator.h:89
#5  0x000000000040f575 in std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_allocate (this=0x7ffc7e0136d8, __n=4096)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_vector.h:140
#6  0x000000000040f186 in std::vector<unsigned char, std::allocator<unsigned char> >::_M_allocate_and_copy<unsigned char*> (this=0x7ffc7e0136d8, 
    __n=4096, __first=0x0, __last=0x0) at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_vector.h:963
#7  0x000000000040e7c7 in std::vector<unsigned char, std::allocator<unsigned char> >::reserve (this=0x7ffc7e0136d8, __n=4096)
    at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/vector.tcc:74
#8  0x00000000004cc616 in ByteBuffer::ByteBuffer (this=0x7ffc7e0136c0) at ../../../../src/shared/./util/ByteBuffer.h:19
#9  0x00000000004cb947 in ReplayMgr::SaveToDB (this=0x23a40d0, pBase=0x57a1160) at ./Replay/ReplayMgr.cpp:95

Baidu a vérifié qu'il se peut que le tableau ait franchi la frontière quelque part et a écrit la mémoire qui ne devrait pas être écrite.
Existe-t-il un bon moyen de vérifier où le tableau a franchi la frontière ?

我想大声告诉你
我想大声告诉你

répondre à tous(2)
女神的闺蜜爱上我

A quoi sert d'utiliser bt pour afficher la pile...

Depuis que vous avez écrit le code, vérifiez quelques syntaxes, c'est le moyen le plus direct. Définissez quelques points d'arrêt clés et exécutez-les étape par étape, et vous trouverez rapidement le problème.

De plus, la méthode dump est également un moyen efficace de résoudre des erreurs similaires.

phpcn_u1582

valgrind

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!