为什么C++程序的运行结果为“分割故障(核心转储)”
问题描述:
#include <iostream>
using namespace std;
int main(){
char* ch;
const char *c1 = "this is a goog book\n thingking in c++";
const char *c2 = "python good book vs cpp";
for(int i=0;i<50;i++)
ch[i]=c1[i];
for(int j=0;j<50;j++)
ch[50+j]=c2[j];
char* p1=(&ch[0]);
cout << "p1=" << p1 << endl;
}
编译代码在Ubuntu 12.04,能编译,但运行结果是“分段故障(核心转储)”为什么C++程序的运行结果为“分割故障(核心转储)”
答
你没有为ch
分配空间。你或许可以把它固定大小的数组:
char ch[128];
,或者你可以从堆中分配它:
char *ch = new char[128];
(不要忘了delete
它时,已完成)。
答
你可能要连接两个数组:
- 你没有为* CH分配空间。
-
char *c1 = "Hello World";
是已弃用的版本。如果你想连接两个数组假设每个的大小为50是不是一个好主意char c1[]="Hello World";
- :这应改为使用。你可以用函数计算出它的尺寸:
strlen(c1);
宣布下string.h
或cstring
- 目前已经可用的库函数
char * strcat (char * destination, const char * source);
其拷贝级联串入的第一个参数。 举例来看this。
为'ch'分配一些内存。使用调试器会在那里指出你。 – 2014-09-01 07:05:34
软件世界需要的技能#1:知道如何自己研究问题。 – 2014-09-01 07:06:24
@JonathanReinhart将代码粘贴到您的本地众包调试服务 – 2014-09-01 07:08:46