私のプログラム mycpp.c はメモリ エラーをスローします。このエラーは、オブジェクト ポインターを上書きしたために発生したと思いますが、エラーの根本的な原因を突き止めることができませんでした。「ref3[1]= ref3[0]」という行が+参照;" が問題を引き起こしているのでコメントしましたが、助けにはなりませんでした。エラーの解決を手伝ってください。 mycpp.c
void mycpp::filldata(ptrStructda pStData)
1871 {
../stmt/...
1947 String s2("");
1948 strcat(ref3[0],reference);
1949 strcat(s2,ref3[0]);
1950 // ref3[1]= ref3[0] +reference;
1951 s2.replace_char('-','.');
1952 // Clean and hold the output value
1953 temp_Buffer->erase();
1954 *temp_Buffer = "";
1955 cout<<"S2:\t"<<s2<<endl;
1956 // strcpy(*temp_Buffer,s2);
1957 }
文字列.c
String::String()
{
_text = new char[1024];
}
String::String(char *ch)
{
if (ch == NULL )
{
// if input char* is empty - allocate short buffer
// and set it to ""
_text = new char[2];
strcpy(_text, "");
}
else
{
_text = new char[strlen(ch) + 1];
if(_text)
strcpy(_text, ch);
else
{
_text = new char[2];
strcpy(_text, "");
}
}
}
String::String(int iLen)
{
_text = new char[iLen+1];
}
String::String(String const & string)//jl202 added const
{
_text = new char[string.length() + 1];
strcpy(_text,string);
}
String::~String()
{
delete[] _text;
}
String &String::operator=(String &ptrStr)
{
delete[] _text;
_text = new char[ptrStr.length() + 1];
strcpy(_text, ptrStr);
return *this;
}
String &String::operator=(char *ch)
{
delete[] _text;
_text = new char[strlen(ch) + 1];
strcpy(_text, ch);
return *this;
}
void String::erase()
{
delete[] _text;
_text = new char[1];
}
文字列.h
class String
{
private:
char *_text;
friend class String_Iterator;
public:
// ctors and dtor
explicit String (); // create String as of 1024 chars
explicit String (char *);
explicit String (int );
String (String const & ); // copy ctor
~String();
/////////////////
// conversions:
/////////////////
// to C-like type char *
operator char *() {return _text;}
operator const char*()const
{
return (const_cast <char *>(_text) );
}
};
観測用の gdb 入力
(gdb) bt
#5 0x0000000000402fda in String::~String (this=0x7fffffffd2f0, __in_chrg=<value optimized out>) at String.c:55
**#6 0x000000000040d58c in mycpp::filldata (this=0x61f0e0, pStData=0x7fffffffdd50) at mycpp.c:1955**
#7 0x000000000041159d in mycpp::base (this=0x61f0e0, pStData=0x7fffffffdd50, account_id=0x6418e0 "0300130",
page_balance=0x7fffffffdf38, items_on_page=0x7fffffffdf34, txn_per_acc=0x7fffffffdf30, total_cash_bal=0x7fffffffdf28, total_cv_bal=0x7fffffffdf20)
at mycpp.c:1328
#8 0x0000000000414e77 in mycpp::Proc (this=0x61f0e0) at mycpp.c:899
#9 0x000000000041704e in mycpp::Run (this=0x61f060) at mycpp.c:97
#10 0x0000000000417146 in main (argc=3, argv=0x7fffffffe1f8) at mycpp.c:2264
ご検討いただきありがとうございます。あなたの価値ある解決策を求めて