我有一段代码可以在Visual Studio中的调试模式下很好地工作,但是在发布模式下会崩溃。经过大量的猜测工作,我发现了导致崩溃的那段代码。

char *buff ="some random text";
char *temp = NULL;
char *pos = NULL;
int len = strlen("random text");

pos = strstr(buff,"random");
temp = (char *) malloc(len+1);
memset(temp,0,len+1);
memcpy(temp,pos,len);


这在调试模式下可完美运行,但在发行时崩溃。有人指出错误吗?

最佳答案

所示的代码部分看起来不错。作为unwind答案的补充。失败的可能原因可能是

1)未初始化的变量

2)预处理程序符号_DEBUG和NDEBUG。如果#ifdef _DEBUG / #endif块中有任何代码。

3)编译优化

关于c - 发行模式下memcpy出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17183835/

10-11 23:06
查看更多