博主最近遇到一个bug,调试了一整天才发现问题所在,给小伙伴们分享下心得。这个bug引起的原因是因为指针指向同一个地方,所导致的问题。
错误修改前的使用
std::vector<char*> data;
std::vector<std::string> result;
result.push_back("123");
result.push_back("456");
result.push_back("789");
for(std::vector<std::string>::iterator it = result.begin();
it != result.end(); it++)
{
char* val = (char *)(*it).c_str();
data->push_back(val);
}
这个地方将string转为char*会出现值可以改变,但有个问题会出现,修改指针中某一个值就会发生所有值都会发生变化。
如修改data[1] = “456789”;
data[0],data[1],data[2] 都会改为同一个值,这个地方的原因是因为,char*类型不能直接等于某个值,直接等于会把指针赋值。这样就会引起data[0]=“123”,&data[0] = “pffff001”,data[1]=“456”,&data[1]=“pffff001”,,data[2]=“7