一个奇怪的问题,调试程序时,提示结构体的某个变量为"错误的指针",详见内容

scsnsjsl_cs_dn 2009-07-13 02:31:56
定义了结构体
struct stbase
{
int age;
std::string name;
std::string other;
};
然后
stbase st_data;
stbase *p = &st_data;//--------(一)
Func(binary_data, st_data);//--------(二)

调试运行到(一)时,还能看到st_data中的3个成员变量的值,
但是当执行(二)后,再看st_data中的成员变量,提示name一项 "错误的指针",同时也看不到他的值了

Func为把string数据转化为结构体的函数(该string数据是之前通过相应的函数转为string的)

请各位朋友指教!!!



...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stjay 2009-07-13
  • 打赏
  • 举报
回复
岂能这样乱用is.read((char*)&t,sizeof(t));
这样操作后,st_data里的name,other都会被填充、覆盖,这2个string就丢失了

struct还是用基本的数据类型吧
class里才用class成员
scsnsjsl_cs_dn 2009-07-13
  • 打赏
  • 举报
回复
那位大侠知道原因,请指教
scsnsjsl_cs_dn 2009-07-13
  • 打赏
  • 举报
回复
func函数为
bool Func(const std::string& s,stbase& t)
{
std::istringstream iss(s);
return is.read((char*)&t,sizeof(t));
}
scsnsjsl_cs_dn 2009-07-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Ryanwen 的回复:]
源代码是怎么样的? age的值正确吗?是不是st_data出了作用域了
[/Quote]
你说的情况应该没有
Ryanwen 2009-07-13
  • 打赏
  • 举报
回复
源代码是怎么样的? age的值正确吗?是不是st_data出了作用域了
codecola 2009-07-13
  • 打赏
  • 举报
回复
Func有问题
dayong576 2009-07-13
  • 打赏
  • 举报
回复
建议如果是结构体的话,不要用CString类型的,用Char的

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧