Stack around the variable 'XX' was corrupted的一种情况
malong 发布于 2022-06-19

在C/C++中定义一个字符串,字符数组的时候,创建方式可以像下面两种方式,

1、char str[9];

2、char *str = new char[9];

第一种方式分配的内存是在栈上,第二种是在堆上,在Visual Studio 2019上第一种方式定义程序运行结果可能出现运行错误

 

在main函数中测试:

char str1[6]="hello";
char str2[7] = " world";
char *hellowolrd = strcat(str1, str2);

调试运行上面的代码,main函数结束后,关闭窗口,报了Run-Time Check Failure #2 - Stack around the variable 'farr' was corrupted.,直接运行exe之后关闭也会报错,而如果使用VS2015编译,调试运行后关闭会报错,但是直接运行exe之后关闭不会报错

而使用下面代码则不会报错

char* str1 = new char[6];
memcpy(str1, "hello", 6);
	
char* str2 = new char[7];
memcpy(str2, " world", 7);

char * hellowolrd = strcat(str1, str2);
malong
关注 私信
文章
35
关注
0
粉丝
0