问题标签 [crt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1295 浏览

windows - 为什么在进程启动期间会创建一个额外的工作线程?

我正在运行一个简单的 Windows 控制台应用程序:- 当控件位于 main 时,我转储了堆栈--

_ 我的主线程堆栈:

__

以上很好,为什么我在启动时看到这个??:

堆:

0 投票
1 回答
112 浏览

c++ - 来自标准库调用的结构化异常 (SE)

我有调用 ::fgetpos 的代码,这会导致无法捕获的内核异常(我的 VS 2008 项目中有选项 /ehs)。但我不禁认为标准库例程不应该抛出这些异常。

更新:我尝试调用 ::fgetpos(0, &foo),这显然是错误的,而且我确实收到了内核级异常。我很困惑。为什么 C++ 标准库不执行最基本的参数检查(检查空指针)并引发 std::invalid_argument?

是否有任何标准库例程执行此类基本检查,或者它们是否都愉快地导致程序终止?

0 投票
0 回答
364 浏览

visual-studio-2008 - VS2008 生成的 dll 依赖于两个不同版本的 CRT 程序集

我的 VS2008 项目生成一个 dll 并链接到另外两个静态库。这是生成的清单:

所以我的 dll 依赖于 2 个不同版本的 CRT 程序集。我怎么知道是什么导致了这种双重依赖并纠正它?我希望我的 dll 绑定到程序集的原始版本,因为它是 vc9.0 的默认行为。

我的代码不包含任何将绑定到特定程序集版本的定义声明

或者

正如msdn网站上所描述的那样

0 投票
2 回答
1099 浏览

c++ - 单个文件上两个 C FILE* 流的一致性

我需要为来自网络套接字的大量数据实现一个简单的“溢出到磁盘”层。我希望有两个 CFILE*流,一个由写入文件的后台线程使用,一个由读取它的前端线程使用。

这两个流是这样一个线程可以在一个偏移量处写入,而另一个在其他地方读取 - 无需锁定并阻塞另一个线程。

将有一个分页机制,因此读/写是在随机访问位置 - 不一定是顺序的。

还有一点需要注意的是,这需要在 Windows 和 Linux 上运行。

问题:在第一个流的 fwrite 返回后,写入的数据是否保证对第二个流上的 fread 立即可见?

如果没有,我还可以考虑哪些其他选择?


所以 Posix 的 pread/pwrite 函数结果是我需要的。这是 Win32 的版本:

(感谢大家对此的投入 - 非常感谢)。

0 投票
1 回答
2289 浏览

windows - 构建 DLL 时;我应该链接到哪种类型的 CRT?

在窗户里;有 2 个选项可以链接到 CRT:

  1. 多线程,静态链接
  2. 多线程,动态链接

有人可以阐明这里的最佳做法是什么吗?我应该“静态”链接到 CRT 还是做动态链接?

如果我做一个动态链接,并且我编写了一个使用我的 DLL + 另一个 3rd 方 DLL 的程序(它正在做一个到 CRT 的静态链接),这是一个问题吗?

0 投票
1 回答
1197 浏览

c++ - 覆盖 CRT 的 _purecall 实现

我目前正在开发一个 DLL,它是一个封闭的、正在运行的项目的扩展。

我想捕捉每一个纯调用错误,所以我用谷歌搜索并发现了 _purecall 处理程序。我的问题是关于它的实施。幕后发生了什么?编译器本身获取我的处理函数地址(如果我定义了一个)并将其写入 v-table 中的每一行的默认值,然后它被类函数地址本身覆盖(在初始化之后),或者它更复杂,涉及CRT 和全局指针?

我问这个是因为我当然不希望我的插件 DLL 覆盖整个应用程序 _purecall 处理程序。我可以确定我的 purecall 处理程序将只处理我的模块中的 purecall 吗?

谢谢!

0 投票
2 回答
3215 浏览

c++ - 验证库 (.lib) 中使用的 CRT

如何检查 Windows 中的静态库 (.lib) 链接到哪个运行时库?

我正在使用 /MDd 编译我的项目,并且我假设我链接到的库正在使用 /MTd 多线程调试

LIBCPMTD.LIB = 多线程、静态链接

我知道有一个/NODEFAULTLIB:"libcpmtd.lib"我已经尝试并成功的选项,但我宁愿避免这种情况。

0 投票
1 回答
306 浏览

c# - 获取 FILE* 句柄以传递给 System.IO.File 和默认流的 C 函数

我在我的 C# 应用程序中使用旧的 C 库(构建为 DLL)。这个库中的一个函数需要FILE*传递一个(在 ANSI C 中定义)。有什么方法可以在 C# 中为 a和System.IO.File获取FILE* 句柄?stdoutstderr

或者有什么办法可以解决这个问题,任何想法,提示等......?

提前致谢。

0 投票
4 回答
546 浏览

c - 在 C 中传递变量参数

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

提前致谢!

0 投票
3 回答
2660 浏览

c++ - Visual C++:可以限制堆大小吗?

我正在调试的应用程序有问题。稳态内存使用量为几百兆字节。偶尔(几个小时后)它会进入内存使用量飙升至数 GB 的状态。我希望能够在发生内存使用时立即停止程序。

在通过我自己的代码进行控制的地方,我可以使用如下代码捕获过多的内存使用:

这对我没有帮助,因为我需要在正确的位置测试工作集大小。我真的希望程序在第一次中断malloc或者new使工作集或堆大小超过某个阈值。理想情况下,我希望通过 CRT 堆本身以最小的开销完成此操作,因为该库喜欢分配大量的小块。

可疑代码位于我的调用代码创建的线程中运行的 DLL 中。DLL 静态链接到 CRT,并且没有特殊的堆管理。我有 DLL 的源代码。

有任何想法吗?我错过了一些明显的东西吗?