當我將char *轉換爲字符串時,會在'new.cpp'中給出錯誤的內存分配錯誤。我使用下面的方法將char *稱爲'strData'和'strOrg'轉換爲字符串。將char *轉換爲字符串時的問題
const char* strData = dt.data();
int length2 = dt.length();
string s1(strData);
第一次工作沒有任何問題。但在第二次轉換時,它會產生上述錯誤。當我按順序交換兩個轉換時,無論我要轉換的char *如何,它都會在第二次轉換時始終給出錯誤。整個代碼如下所示。
mysqlpp::Query query = conn.query("SELECT data,origin from image where id =2");
mysqlpp::UseQueryResult res = query.use();
mysqlpp::Row eee= res.fetch_row();
mysqlpp::Row::reference dt = eee.at(0);
mysqlpp::Row::reference org = eee.at(1);
const char* strData = dt.data();
int length2 = dt.length();
string s1(strData);
istringstream is1(s1);
char * imgData = new char;
is1.read(reinterpret_cast<char *> (imgData), length2);
delete [] strData;
const char* strOrg = org.data();
int length3 = org.length();
string s2(strOrg);
istringstream is2(s2);
char * imgOrg = new char;
is2.read(reinterpret_cast<char *> (imgOrg), length3);
delete [] strOrg;
這其中的誤差來自
void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc)
{
void *p;
while ((p = malloc(size)) == 0)
if (_callnewh(size) == 0)
{ // report no memory
static const std::bad_alloc nomem;
_RAISE(nomem);
}
return (p);
}
請幫我解決這個問題。這是迫切
你有沒有嘗試過在調試器中查看發生了什麼? – 2010-04-27 15:48:13
你能否澄清你的目標是什麼?你目前的代碼中充滿了**答案中提到的**不同的錯誤。如果您需要將數據從MySql查詢轉換爲std :: string,請查看http://tangentsoft.net/mysql++/doc/html/refman/classmysqlpp_1_1String.html#a30 – SergGr 2010-04-27 15:59:37