stringstream 太坑人,求高手指点迷津!!

beMyBest 2015-10-01 04:53:31
百思不得其解,昨天一下午一晚上一直在搞这个问题,实在是搞不出来了
求高手大神们高抬贵手,帮我瞄一瞄,到底是苹果 sdk 的问题,还是我自己代码的问题
#include <sstream>

void func0() {
// 这里在调用 << 'I'; 或 .put('I') 的时候出错:
// EXC_BAD_ACCESS(code=0,address=0xffffffff00000000),有有汇编的报错,我看不懂
// 环境是 Mac + XCode,以 arm64(64位) 架构跑必崩溃,以 armv7(32位) 架构跑则完全正常
std::stringstream ss;
ss << "I";
printf("func0.ss = %s\n", ss.str().c_str());
}

void func1() {
// 执行没问题
func0();
std::stringstream ss;
ss << "I";
printf("func1.ss = %s\n", ss.str().c_str());
}

void func2() {
// 执行没问题
func1();
std::stringstream ss;
ss << "A";
printf("func2.ss = %s\n", ss.str().c_str());
}

int main() {
func2();
return 0;
}
...全文
395 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluewanderer 2015-10-01
  • 打赏
  • 举报
回复
引用 7 楼 beMyBest 的回复:
[quote=引用 4 楼 bluewanderer 的回复:] 苹果命令行下用C++各种奇葩问题。不过arm下用命令行是怎么回事?
直接用的 xcode 编译运行的,没有用 g++ 命令什么的,arm64 是编译架构的选项,在 IDE 里面选一下就可以了[/quote] 我是说... 你当真在手机上跑命令行了? 表示在手机上倒没见C++出过问题。在Mac上一般也就是测点逻辑,没正经开发过东西,所以用得少,出了奇葩事也懒得研究。不过不得不说奇葩事真多。
beMyBest 2015-10-01
  • 打赏
  • 举报
回复
引用 4 楼 bluewanderer 的回复:
苹果命令行下用C++各种奇葩问题。不过arm下用命令行是怎么回事?
直接用的 xcode 编译运行的,没有用 g++ 命令什么的,arm64 是编译架构的选项,在 IDE 里面选一下就可以了
beMyBest 2015-10-01
  • 打赏
  • 举报
回复
引用 5 楼 zxh707wk 的回复:
装windows虚拟机运行试试
....我开发 ios app 啊。。。。
707wk 2015-10-01
  • 打赏
  • 举报
回复
装windows虚拟机运行试试
bluewanderer 2015-10-01
  • 打赏
  • 举报
回复
苹果命令行下用C++各种奇葩问题。不过arm下用命令行是怎么回事?
beMyBest 2015-10-01
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
void func0() {
    //make a const ref to avoid early dtor
    std::string const& x = ss.str();
    printf("func0.ss = %s\n", x.c_str());
}
your code seems good. your compiler may not take good care of this
嗯,过早释放那里应该没有问题,还没走到那里去,另外即使把 func0, func1 里面的 stringstream 相关代码去掉,也依然会出问题,func0 和 func1 里面的 stringstream 相关的代码是在出问题后我抓狂做测试加上的
beMyBest 2015-10-01
  • 打赏
  • 举报
回复
引用 1 楼 mujiok2003 的回复:
code seems good. your compiler may not take good care of this
确实很奇怪,不知道该怎么办了,armv7 32 位下面的确是没问题的,一开始是在 arm64 64 位下面弄,还以为程序有问题,后来是在没办法改成 armv7 的架构,竟然能正常跑了,说明程序问题不大。。。大大,能给个解决这个问题的思路么?
mujiok2003 2015-10-01
  • 打赏
  • 举报
回复
void func0() {
    // 这里在调用 << 'I'; 或 .put('I') 的时候出错:
    // EXC_BAD_ACCESS(code=0,address=0xffffffff00000000),有有汇编的报错,我看不懂
    // 环境是 Mac + XCode,以 arm64(64位) 架构跑必崩溃,以 armv7(32位) 架构跑则完全正常
    std::stringstream ss;
    ss << "I";
    //make a const ref to avoid early dtor
    std::string const& x = ss.str();
    printf("func0.ss = %s\n", x.c_str());
}
your code seems good. your compiler may not take good care of this

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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