使用C函数连接到大字符*

时间:2016-07-05 19:08:16

标签: c string memory char

我试图连接char *和const字符串,但系统挂起。以下是代码

unsigned long long size = 2*pow(10,18);
char* string = malloc(size);    
strcat(string," ");

我不确定如何解决错误。在Windows 10中使用Dev c / c ++。

编辑:感谢您的所有意见和回答。我在代码中进行了更改。但它仍然给出了同样的问题。 它不会打印语句并仍然挂起。

char* string = malloc(20*sizeof(char));
if(string=NULL){
    printf("unsuccessful memory allocation");
}

strcat(string," ");

3 个答案:

答案 0 :(得分:3)

最可能的原因可能是malloc() 可能无法分配您请求的内存量。始终以这种方式检查内存是否成功分配:

char *p; //some pointer
p=malloc(size*sizeof(char));

if(p==NULL)
{
    printf("unsuccessfull memory allocation");
    exit(1);
}
  

注意:

     
      
  • malloc()返回成功分配时新分配的内存的地址。
  •   
  • 如果内存分配不成功,则返回NULL
  •   

正如@BLUEPIXY在评论中提到的那样,即使分配成功,您的strcat()也会失败,

在使用前尝试初始化string

*string = 0; 

或在string功能之前复制strcat()

答案 1 :(得分:1)

您正尝试分配20000000TB。你当然没有那么多记忆。 malloc将失败并返回一个NULL指针,然后您尝试写入!

答案 2 :(得分:0)

我认为失败的原因是你试图使用malloc的内存大小。

  

unsigned long long size = 2 * pow(10,18);

     

char * string = malloc(size);

你正在尝试malloc:2000000000000000000字节

多数民众赞成2 EB(EB:exabyte)1 EB = 1000000 GB