我想给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/