小弟最近遇到一个问题,如下
主程序a.cpp
#include "b.h"
int main()
{
int *abc,*abcd;
*abc=123;
abcd=c(abc);
std::cout<<"s"<<*abcd;
return 0;
}
b.h文件
#include <iostream>
int *c(int *a);
b.cpp文件
#include "b.h"
int *c(int *a)
{
int *b;
b=a;
std::cout<<"bֵ:"<<*b<<"\n";
return b;
}
我在WINDOWS上用tdm gcc 4.4.0版本编译。
b.h b.cpp两个文件里的函数可以顺利执行输出信息,只有a.cpp里的std::cout不能输出而且还导致程序崩溃。
症状是
std::cout<<"s"<<*abcd;这行,如果这样写,会让程序崩溃,弹出一个对话框,上面写:“a.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。“但如果改成std::cout<<*abcd;就可以不让程序崩溃还能输出信息,如果改成std::cout<<*abcd<<"s";也没问题。
各位高手,这个问题怎么办呢?谢谢了。
c++ std::cout问题
-
- 帖子: 46
- 注册时间: 2007-08-14 14:33
- peachcolor
- 帖子: 898
- 注册时间: 2006-05-20 14:03
Re: c++ std::cout问题
你确信去掉“s”就不崩溃了?
按理说你*abc=123那一行已经出segmentation fault了,需要在前面加上abc=new int;
按理说你*abc=123那一行已经出segmentation fault了,需要在前面加上abc=new int;
-
- 帖子: 46
- 注册时间: 2007-08-14 14:33
Re: c++ std::cout问题
去掉<<"s"或者放在最后可以编译通过,顺利执行,就是放前面,能编译通过,但无法执行。
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: c++ std::cout问题
编译通过顺利执行不代表就是对的zzh.org 写了:去掉<<"s"或者放在最后可以编译通过,顺利执行,就是放前面,能编译通过,但无法执行。
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
- imlazy
- 帖子: 136
- 注册时间: 2006-10-29 10:49
- 来自: Shanghai, China
Re: c++ std::cout问题
代码: 全选
int* abc;
*abc=123;
- CGer
- 帖子: 210
- 注册时间: 2009-06-21 19:38
- 来自: CUMT
Re: c++ std::cout问题
这个program好像没什么significant吧
代码: 全选
sudo apt-get install girlfriend
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
有一些软件包无法被安装。
下列的信息可能会对解决问题有所帮助:
下列的软件包有不能满足的依赖关系:
girlfriend: 依赖: house但是它将不会被安装
girlfriend: 依赖: car但是它将不会被安装
house,car: 依赖: money但是它将不会被安装
E: 无法安装的软件包
-
- 帖子: 46
- 注册时间: 2007-08-14 14:33
Re: c++ std::cout问题
真不好意思,这方面知识还真得恶补一下了,谢谢各位了。
- xiaocheng_zh
- 帖子: 46
- 注册时间: 2009-05-30 15:52
- 来自: DL LIAONING CHN
Re: c++ std::cout问题
int* abc还没有房子,就想……