分页: 1 / 1

c++ std::cout问题

发表于 : 2009-06-24 10:30
zzh.org
小弟最近遇到一个问题,如下
主程序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";也没问题。
各位高手,这个问题怎么办呢?谢谢了。

Re: c++ std::cout问题

发表于 : 2009-06-24 10:47
peachcolor
你确信去掉“s”就不崩溃了?
按理说你*abc=123那一行已经出segmentation fault了,需要在前面加上abc=new int;

Re: c++ std::cout问题

发表于 : 2009-06-24 13:12
zzh.org
去掉<<"s"或者放在最后可以编译通过,顺利执行,就是放前面,能编译通过,但无法执行。

Re: c++ std::cout问题

发表于 : 2009-06-24 13:20
BigSnake.NET
zzh.org 写了:去掉<<"s"或者放在最后可以编译通过,顺利执行,就是放前面,能编译通过,但无法执行。
编译通过顺利执行不代表就是对的

Re: c++ std::cout问题

发表于 : 2009-06-24 22:50
imlazy

代码: 全选

int* abc;
*abc=123;
您怎么能没分配空间就直接操作指针!

Re: c++ std::cout问题

发表于 : 2009-06-25 13:16
CGer
这个program好像没什么significant吧 :em06

Re: c++ std::cout问题

发表于 : 2009-06-26 8:08
zzh.org
真不好意思,这方面知识还真得恶补一下了,谢谢各位了。

Re: c++ std::cout问题

发表于 : 2009-07-01 19:45
xiaocheng_zh
int* abc还没有房子,就想…… :em05 :em05 :em05