BenBir kopyayı aşırı operatörlerle döndürme
Foo Foo::operator+(const Bar &b)
{
Foo copy = (*this);
if (someCondition) return copy;
//snip
}
Benim için aşağıdaki gibi bir operatöre aşırı yüklediğim bir Foo
sınıfına sahibim: Bu makul görünüyor. Ancak, her ne zaman bir kopyasını iade ettiğimde, Visual Studio beni 'yığının bozulmasından kaynaklanabilecek' bir hatadan uyarır. Yaptığım şeyle ilgili bir sorun mu var?
düzenleme: daha fazla bilgi ile güncelleme.
Hata iletisi:
Windows, sample.exe dosyasında bir kesme noktası tetiklemiştir.
Bu, sample.exe dosyasında bir hata ya da yüklü olan herhangi bir DLL dosyasını gösteren yığınının bozulması olabilir.
Bu, örnek odağı varken kullanıcı F12 tuşuna da bağlı olabilir.
Çıkış penceresi daha fazla teşhis bilgisine sahip olabilir.
Foo::Foo(const Foo&p)
{
some_pointer = p.get_some_pointer();
some_value = p.get_some_value();
}
Bu kod koptuğunda:
//within dbgheap.c
extern "C" _CRTIMP int __cdecl _CrtIsValidHeapPointer(
const void * pUserData
)
{
if (!pUserData)
return FALSE;
if (!_CrtIsValidPointer(pHdr(pUserData), sizeof(_CrtMemBlockHeader), FALSE))
return FALSE;
return HeapValidate(_crtheap, 0, pHdr(pUserData));
}
Bize Foo'nun kopya kurucusunu gösterir misiniz? –
Hata kodu nedir? – metdos
@ Space_C0wb0y @metdos Daha fazla bilgi ile güncelledim – socks