我试图连接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," ");
答案 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