当我将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