C++里给string变量赋值报0xC0000005异常,有人遇到过吗

时间:2021-10-15 18:53:23
void MyCamera::setCameraInfo(string ip , int port , string usr , string pwd )
{
m_ip = "   ";

m_ip = ip ; 
m_port = port ;
m_usr = usr ;
m_pwd = pwd ;
}


之前以为是下面四行的问题,加了最前面一行做测试,居然也报错,求各位大神相救

15 个解决方案

#1


m_开头的这些变量是如何声明的?或把你的类贴出来

#2


你确定你的 m_ip 是string类型而不是 char [] 么

#3


引用 1 楼 lianshaohua 的回复:
m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;

#4


引用 2 楼 jianwen0529 的回复:
你确定你的 m_ip 是string类型而不是 char [] 么

确定呀,除了port是个int外都是字符串

#5


引用 4 楼 baidu_36362649 的回复:
Quote: 引用 2 楼 jianwen0529 的回复:

你确定你的 m_ip 是string类型而不是 char [] 么

确定呀,除了port是个int外都是字符串


那我没看出有任何问题

建议你去看看调用 setCameraInfo 的地方,比如实参的传递,还有该行代码的前一行是否有问题

#6


检查一下, 调用这个函数的时候,这个对象是否已被释放?

#7


引用 3 楼 baidu_36362649 的回复:
Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?

#8


引用 7 楼 lianshaohua 的回复:
Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊

#9


引用 6 楼 heyuhang112 的回复:
检查一下, 调用这个函数的时候,这个对象是否已被释放?
没有啊

#10


引用 5 楼 jianwen0529 的回复:
Quote: 引用 4 楼 baidu_36362649 的回复:

Quote: 引用 2 楼 jianwen0529 的回复:

你确定你的 m_ip 是string类型而不是 char [] 么

确定呀,除了port是个int外都是字符串


那我没看出有任何问题

建议你去看看调用 setCameraInfo 的地方,比如实参的传递,还有该行代码的前一行是否有问题


之前确认过,参数传过来之后都还正常呢

#11


你这个类的对象是怎么申请的?

#12


引用 8 楼 baidu_36362649 的回复:
Quote: 引用 7 楼 lianshaohua 的回复:

Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊


有一种可能:对象不存在了,
你可以试试:cout<<this->m_ip<<endl;

#13


引用 12 楼 lianshaohua 的回复:
Quote: 引用 8 楼 baidu_36362649 的回复:

Quote: 引用 7 楼 lianshaohua 的回复:

Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊


有一种可能:对象不存在了,
你可以试试:cout<<this->m_ip<<endl;

多谢,后来发现问题了,是new这个对象的语句还在执行这个之后呢,所有出问题了,多谢各位大神指点

#14


有一种可能,你这个成员函数声明时加了static

#15


引用 13 楼 baidu_36362649 的回复:
Quote: 引用 12 楼 lianshaohua 的回复:

Quote: 引用 8 楼 baidu_36362649 的回复:

Quote: 引用 7 楼 lianshaohua 的回复:

Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊


有一种可能:对象不存在了,
你可以试试:cout<<this->m_ip<<endl;

多谢,后来发现问题了,是new这个对象的语句还在执行这个之后呢,所有出问题了,多谢各位大神指点

原来已经找到问题了。

#1


m_开头的这些变量是如何声明的?或把你的类贴出来

#2


你确定你的 m_ip 是string类型而不是 char [] 么

#3


引用 1 楼 lianshaohua 的回复:
m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;

#4


引用 2 楼 jianwen0529 的回复:
你确定你的 m_ip 是string类型而不是 char [] 么

确定呀,除了port是个int外都是字符串

#5


引用 4 楼 baidu_36362649 的回复:
Quote: 引用 2 楼 jianwen0529 的回复:

你确定你的 m_ip 是string类型而不是 char [] 么

确定呀,除了port是个int外都是字符串


那我没看出有任何问题

建议你去看看调用 setCameraInfo 的地方,比如实参的传递,还有该行代码的前一行是否有问题

#6


检查一下, 调用这个函数的时候,这个对象是否已被释放?

#7


引用 3 楼 baidu_36362649 的回复:
Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?

#8


引用 7 楼 lianshaohua 的回复:
Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊

#9


引用 6 楼 heyuhang112 的回复:
检查一下, 调用这个函数的时候,这个对象是否已被释放?
没有啊

#10


引用 5 楼 jianwen0529 的回复:
Quote: 引用 4 楼 baidu_36362649 的回复:

Quote: 引用 2 楼 jianwen0529 的回复:

你确定你的 m_ip 是string类型而不是 char [] 么

确定呀,除了port是个int外都是字符串


那我没看出有任何问题

建议你去看看调用 setCameraInfo 的地方,比如实参的传递,还有该行代码的前一行是否有问题


之前确认过,参数传过来之后都还正常呢

#11


你这个类的对象是怎么申请的?

#12


引用 8 楼 baidu_36362649 的回复:
Quote: 引用 7 楼 lianshaohua 的回复:

Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊


有一种可能:对象不存在了,
你可以试试:cout<<this->m_ip<<endl;

#13


引用 12 楼 lianshaohua 的回复:
Quote: 引用 8 楼 baidu_36362649 的回复:

Quote: 引用 7 楼 lianshaohua 的回复:

Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊


有一种可能:对象不存在了,
你可以试试:cout<<this->m_ip<<endl;

多谢,后来发现问题了,是new这个对象的语句还在执行这个之后呢,所有出问题了,多谢各位大神指点

#14


有一种可能,你这个成员函数声明时加了static

#15


引用 13 楼 baidu_36362649 的回复:
Quote: 引用 12 楼 lianshaohua 的回复:

Quote: 引用 8 楼 baidu_36362649 的回复:

Quote: 引用 7 楼 lianshaohua 的回复:

Quote: 引用 3 楼 baidu_36362649 的回复:

Quote: 引用 1 楼 lianshaohua 的回复:

m_开头的这些变量是如何声明的?或把你的类贴出来


private:
string  m_ip;
string  m_usr;
string  m_pwd;
int     m_port;


你的这个类不会是在动态库中吧?


不是啊


有一种可能:对象不存在了,
你可以试试:cout<<this->m_ip<<endl;

多谢,后来发现问题了,是new这个对象的语句还在执行这个之后呢,所有出问题了,多谢各位大神指点

原来已经找到问题了。