Tag: crt

在C中传递变量参数

有人知道经典C中如何传递变量参数吗? 我今天做了一些调试,大多数常规参数都是通过堆栈传递的。 但是,似乎这不适用于变量参数。 这些参数是否存储在其他地方,如常量字符串? 提前致谢!

使用_crtBreakAlloc查找内存泄漏 – 标识符“_crtBreakAlloc”未识别

我试图在Watch窗口中使用_crtBreakAlloc , 如此链接中所建议的那样,但是值行显示“identifier”_crtBreakAlloc“未识别”并且它根本不起作用。 我究竟做错了什么? 我顺便使用Visual Studio。 代码示例: #define _CRTDBG_MAP_ALLOC #include #include #include int main() { int *arr = (int*)malloc(10 * sizeof(int)); //breakpoint here free(arr); return 0; } 然后我将_crtBreakAlloc写入Watch窗口的Name字段,并在遇到断点时按Enter键。

如何在VC中输入main()例程之前执行一些代码?

我正在阅读Microsoft的CRT源代码,我可以提出以下代码,其中函数__initstdio1将在main()例程之前执行。 问题是,如何在VC(而不是VC ++代码)中输入main()例程之前执行一些代码? #include #pragma section(“.CRT$XIC”,long,read) int __cdecl __initstdio1(void); #define _CRTALLOC(x) __declspec(allocate(x)) _CRTALLOC(“.CRT$XIC”) static pinit = __initstdio1; int z = 1; int __cdecl __initstdio1(void) { z = 10; return 0; } int main(void) { printf(“Some code before main!\n”); printf(“z = %d\n”, z); printf(“End!\n”); return 0; } 输出将是: Some code before main! z = 10 End! […]

如何在不使用WinMain的情况下编写Windows应用程序?

用C / C ++编写的Windows GUI应用程序将’WinMain’作为入口点(而不是’main’)。 我对此的理解是编译器生成一个’main’函数,由C Runtime调用。 这个’main’函数为GUI设置必要的环境并调用’WinMain’(指定实例句柄等)。 简而言之,我认为控制台和GUI应用程序的启动方式有以下不同之处: 控制台应用程序:C运行时 – >’主’function(手动编码) GUI应用程序:C运行时 – >’main’函数(编译生成) – >’WinMain’函数(手工编码) 我想validation这种理解,并找出如何只使用’main’函数手动编写Windows GUI(即无需编写’WinMain’)。

如何从fopen FILE结构中获取文件HANDLE?

fopen函数返回一个指向FILE结构的指针,该结构应被视为不透明值,而不处理其内容或含义。 在Windows上,C运行时是Windows API的包装, fopen函数依赖于CreateFile函数。 CreateFile函数返回一个HANDLE ,由其他Windows API使用。 现在,我需要在使用fopen和FILE*的库内部使用Windows API。 那么:有没有办法从FILE结构中获取HANDLE ? 由于这是特定于编译器的,我的意思是在MSVC运行时库上。 我知道这将是一个丑陋的,不可移植的黑客,如果微软改变FILE的内部格式,可能会破坏…但我正在开发一个封闭的系统(即在Windows CE嵌入式系统上)并重构图书馆既困难又耗时。