我只是想试试这段代码......
#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";
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码......没有任何内容被打印.如果我评论"strcpy(outFile2,outFile1);"......两个"HI"都被打印出来.为什么这样?它并没有给我任何错误.
您正在写入无效的位置.你的程序在静默崩溃strcpy().第一个HI不打印,因为输出是缓冲的.如果您将第一个cout更改为:
cout << "HI" << endl;
Run Code Online (Sandbox Code Playgroud)
......你可能会得到它.
至于你的程序崩溃的原因,这会将字符串的地址放入outfile1:
outFile1 = "//tmp//Softwares//v//vdisk";
Run Code Online (Sandbox Code Playgroud)
这会将该字符串复制到零位置,这通常会杀死您的程序(取决于操作系统):
strcpy(outFile2, outFile1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |