【发布时间】:2016-05-27 03:44:58
【问题描述】:
我有一个主函数调用它:
int main (int argc, char * argv[]) {
char * x = (char*) malloc(100);
x = "test string";
printf("data: %s", x);
StreamManager * SM = new StreamManager(NULL, x);
}
StreamManager 在这里有一个构造函数:
StreamManager::StreamManager(ConnectionManager * CMin, char * data) {
printf("Creating StreamManager\n");
printf("%s\n", data);
printf("done");
...
}
调用它会给出输出:
data: test stringCreating StreamManager
test string
Segmentation fault (core dumped)
为什么?不应该是空终止的吗?
编辑:即使更改后问题仍然存在。
主要:
char * x = (char*) malloc(100);
strcpy(x, "This is a test");
StreamManager * SM = new StreamManager(NULL, x);
建设者:
printf("Creating StreamManager\n");
printf("%s\n", data);
printf("done");
fflush(stdout);
完成不打印。我认为段错误发生在构造函数的第二个 printf 中。
【问题讨论】:
-
为什么什么?你到底在问什么
-
为什么会出现段错误?它不应该在“测试字符串”之后打印“完成”吗?另外,如果我将测试字符串更改为“测试字符串\0”,它仍然有问题。
标签: c++ string pointers char c-strings