我只是想尝试这段代码...
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main() {
char *outFile1 = NULL;
char *outFile2 = NULL;
cout << "HI";
outFile1 = "//tmp//Softwares//v//vdisk";
strcpy(outFile2, outFile1);
cout << "HI";
}
如果我运行此代码,将不会打印任何内容。如果我评论“ strcpy(outFile2,outFile1);” ...则同时打印“ HI”。为什么是这种情况?它并没有抛出我任何错误。
最佳答案
您正在写入无效的位置。您的程序在strcpy()
上无提示地崩溃。由于输出已缓冲,因此第一个HI
不打印。如果将第一个提示更改为此:
cout << "HI" << endl;
...您可能会得到它。
至于为什么程序崩溃,这会将字符串的地址放入
outfile1
:outFile1 = "//tmp//Softwares//v//vdisk";
这会将字符串复制到位置零,这通常会杀死您的程序(取决于操作系统):
strcpy(outFile2, outFile1);