我只是想试试这段代码。
#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“都会打印出来。为什么这是t案?不过,它并没有抛出任何错误。
发布于 2012-08-24 05:18:17
没有为这两个字符串分配内存。您只需设置一个指向字符串文字"//tmp//Softwares//v//vdisk“的指针。现在,当您将其从outFile1复制到outFile2时,您很可能会覆盖不应该覆盖的内容,或者出于某种原因,strcpy会在其他地方引发问题(很难说,因为它是未定义的)。不过,这只是一种猜测。
https://stackoverflow.com/questions/12100062
复制相似问题