我想给char*分配一个char*,如果我使用strcpy,我会遇到几个运行时内存问题,所以我可以通过使用= operator的简单分配来解决它。
谁能解释在使用strcpy之前应该准备什么以避免内存问题。

编辑:

int Function(const char* K,char* FileIN,char* FileOut,int DC)
{
    char *fic_in,*n_fic,*fic_out,*fic_dec;

    unsigned char k[17];

        fic_in = (char*)malloc(60*sizeof(char));

        strcpy((char*)k,K);

        //strcpy(fic_in,FileIN);  //I remove this one
        fic_in=FileIN;            //and replace it by this
      ...

最佳答案

const char *a = "string literal";
const char *b;
a是一个指向字符串文字的指针。 b是没有特别指向的指针(未初始化)。
b = a;

现在,b指向与a指向相同的内存。
char c[100];
c现在是100个字符的数组。到目前为止,该内存区域与其他所有区域完全分开。
strcpy(c, a);
c的内容(具体来说,前15个字节)现在具有与a指向的内存相同的值。因此,现在有两个包含相同字符串数据的内存区域。

如您所见,分配指针与strcpy几乎没有什么共同点。如果您想将char*分配给char*,那么您不应该靠近strcpy

阅读有关C++的书非常重要,但是strcpy的基本要求是目标指针必须指向内存区域,该区域必须有足够的空间容纳源指针所指向的字符串。可能您的“运行时内存问题”是因为您不确定,所以这就是您需要阅读一本书的原因。

关于c++ - 如何安全使用strcpy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12840284/

10-15 00:35