我试图编译使用该程序:“的sprintf” 使用Visual Studio提高例外2013
- 的Visual Studio 2013
- WATCOM
在WATCOM它编译和运行完美。
在Visual Studio上,第二个sprintf
引发了一个异常。
计划:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
//-------------------------------------------------------//
char *filename = 0;
filename = (char *)malloc(100* sizeof(char)); // allocate
sprintf(filename, "Test"); // write to string ok
filename = "Test"; // write to string
sprintf(filename, "Test"); // write to string fails VisualStudio2013.
getchar();
}
我不明白发生了什么。有人可以解释吗?
你真的可以在这里添加异常吗? – fk2
'filename =“Test”;''''sprintf(filename,“Test”);''后不能写静态分配的存储。 –
*在Watcom上编译和运行完美。*它不能“完美”运行,除非“完美”意味着程序没有崩溃。您正在通过覆盖'malloc'返回的指针来创建内存泄漏。 – PaulMcKenzie