29-11-2007, 18:46
|
|
|
|
חבר מתאריך: 23.10.05
הודעות: 319
|
|
באג בשיחרור זיכרון ב-C++
שלום.
כתבתי קוד פשוט, אבל בשיחרור זיכרון (FREE) קופץ לי באג. למה?
סביבת פיתוח: MS VS 2005
ציטוט:
#include <iostream>
using namespace std;
class mem
{
char *p;
public:
mem(int len)
{
p=(char*)malloc(len*sizeof(char));
}
~mem()
{
free(p);
}
void set(char *str)
{
int s=strlen(str);
int t=strlen(p);
if(s<t)
p=str;
else
cout<<"cannot assign string "<<str<<"into p\n";
}
void show()
{
cout<<p<<"\n";
}
};
void main()
{
mem m1(10), m2(20);
m1.set("asdfghjkl");
m2.set("jgjhghjgjgjghjgh");
//m1=m2;
m1.show();
m2.show();
system("pause");
}
|
בזמן שניכנסים ל-DESTRUCTOR , מקבל הדעה:
Windows has triggered a breakpoint in 88.exe.
This may be due to a corruption of the heap, and indicates a bug in 88.exe or any of the DLLs it has loaded.
The output window may have more diagnostic information
|