jjzjj

c++ - 在 Win32/MFC 和 POSIX 中,线程会自行清理吗?

我正在使用C++和Boost开发一个多线程程序。我正在使用辅助线程来异步初始化资源。如果我分离线程并且对线程的所有引用都超出范围,我是否泄漏了任何资源?还是线程会自行清理(即它的堆栈和自身所需的任何其他系统资源)?根据我在文档中看到的内容(以及我8年前从pthreads中记忆的内容),不需要进行明确的“销毁线程”调用。我希望线程异步执行,当需要使用资源时,我会检查是否发生错误。粗略的代码看起来像这样://Assumethiswon'tgetcalledfrequentlyenoughthatnext_resourcewon'tgetpromoted//beforethethreadfi

windows - CMake 中确定文件大小的可移植方式是什么?

我需要通过CMake脚本以可移植的方式确定任意文件中的字节数。这个文件可能很大,所以用file(READ...)命令读取它并计算字符串长度不是最佳选择。如果我只需要在MacOS和/或Linux上运行,我会使用wc-c,这正是我想要的。但是假设只有Windows工具链,脚本需要与Windows兼容。(我对Windows开发不是很了解。)我预计这是一个常见的操作,但我没有在CMake模块源中找到任何类似的东西(可能搜索了错误的东西),而且cmake的安迪似乎不支持它-E命令。所以我正在寻找一些巧妙的方法来通过单个命令获取此信息,或者寻找有关我可以在Windows中使用哪些命令的建议并环绕i

c++ - POSIX 套接字 VS Web 套接字 VS Windows TCP/IP 套接字

我是网络编程的新手,对WebSockets感到困惑这似乎是一项相当新的技术并且POSIXSocketProgramming已经存在了几十年,WindowsTCP/IPSocketC++.它们到底有什么区别???,在我看来,这三个都与客户端和服务器之间的所有套接字连接相同。谁能给我解释一下,谢谢!!! 最佳答案 C套接字API是用于创建基于流的套接字(TCP套接字、UNIX域套接字)和基于数据报的套接字(UDP套接字)的低级机制。为此,POSIXAPI和WindowsAPI略有不同(有时以微妙的方式……Windows具有许多POSIX

c++ - 将 Linux 打开、读取、写入、关闭功能转换为在 Windows 上工作

下面的代码是为Linux编写的,使用了打开、读取、写入和关闭。我在Windows计算机上工作,我通常在其中使用fopen、fgets、fputs、fclose。现在,我收到打开、读取、写入和关闭的无原型(prototype)错误。是否有我可以包含的头文件以使其在Windows计算机上运行,​​或者我是否需要转换代码?你能展示如何转换它以便它在Windows上工作相同,或者至少让我指向一个显示如何转换它的在线文档吗?#include#include#include#include#include#include#ifdefunix#include#endif#include#includ

c++ - wcsdup 分配的内存是否应该显式释放?

类似wcsdup的函数,隐式调用malloc为目标缓冲区分配内存。我想知道因为内存分配不是很明确,所以显式释放存储似乎合乎逻辑吗?这更像是一个设计困境,赞成和反对的理由如下应该被释放因为不释放它会导致内存泄漏。有据可查的是,wcsdup/_wcsdup调用malloc来分配内存,即使它是从C++程序调用的。不应被释放,因为wcsdup积累的内存最终会在程序退出时释放。在整个程序生命周期中,我们总是会遇到一些内存泄漏(除非我们大量调用wcsdup以获得较大的缓冲区大小)。它可能会造成混淆,因为free之前没有明确的malloc。由于它不是标准的一部分但符合posix,Microsoft实

windows - Git 对 POSIX 功能的依赖在 Windows 上仍然是一个问题吗?

据我所知,Git似乎严重依赖POSIX特定的功能,导致Windows上出现兼容性问题。但是,我并不具体了解Git使用的哪些POSIX功能无法在Windows上轻易复制。由于这个问题,我一直很犹豫是否要在我的Windows计算机上开始使用Git。Git使用了哪些POSIX特性,这仍然是一个问题吗?像msysGit这样的项目是如何设法规避这些问题的? 最佳答案 是的,Git确实依赖于POSIX系统,但请注意POSIXspecifiesalotofthings:shell环境(即命令行环境)、操作系统接口(interface)(即实现文件

c++ - 内部和外部编码与 Unicode

由于这个问题的评论中有几位发帖人散布了很多错误信息:C++ABIissueslist我创建这个是为了澄清。用于C风格字符串的编码是什么?Linux是否使用UTF-8编码字符串?外部编码与窄字符串和宽字符串使用的编码有何关系? 最佳答案 实现已定义。甚至应用程序定义;标准并没有真正对应用程序的用途施加任何限制他们,并期望很多行为取决于语言环境。全部真正实现定义的是字符串中使用的编码文字。在什么意义上。大多数操作系统会忽略大部分编码;你会如果'\0'不是空字节就会有问题,但即使是EBCDIC也能满足要求。否则,根据上下文,会有一些可能重

c - 将 POSIX C 代码移植到 Windows

我刚刚完成了一个用C编写的小项目,我从串口读取数据流并解析传入的数据。该软件是为POSIX系统(使用termios)编写的,并遵循使用串行i/o的标准步骤使用open()打开串口设备配置通信参数(termios)在文件句柄上设置阻塞模式(fcntl)在串行接口(interface)上​​执行read()。完成后在串行接口(interface)上​​执行close()。除了套接字部分,代码是直接的ANSIC。我的问题是,要使代码在Windows平台上运行有多复杂。该端口不会由我编写,我只想向可能有兴趣移植它的其他人提供一个指示(即微不足道,不那么微不足道,撕裂你的眼睛会引起精神错乱)。此

winapi - 用于虚拟内存管理的新 Windows 8.1 API : `DiscardVirtualMemory()` vs `VirtualAlloc()` and `MEM_RESET` and `MEM_RESET_UNDO`

Windows8.1/Server2012RC2刚刚引入了用于虚拟内存管理的新API:OfferVirtualMemory()、ReclaimVirtualMemory()、DiscardVirtualMemory()、它们的用法非常简单,只需查看它们的名称即可。我无法理解这些API如何针对VirtualAlloc()以及标志MEM_RESET和MEM_RESET_UNDO工作,以及什么是细微差别。对于OfferVirtualMemory(),MSDN说它与VirtualAlloc()+MEM_RESET非常相似,只是它从工作集,并限制对页面的进一步访问。所以,基本上它限制了对页面的访

c# - 从 C#/NET 引用针对 Cygwin 在 GCC 中构建的 GNU C (POSIX) DLL

这就是我想要的:我有一个为POSIX编写的巨大的遗留C/C++代码库,包括一些非常POSIX特定的东西,比如pthreads。这可以在Cygwin/GCC上编译并作为可执行文件在Windows下使用CygwinDLL运行。我想做的是将代码库本身构建到一个WindowsDLL中,然后我可以从C#引用它并围绕它编写一个包装器以编程方式访问它的某些部分。我在http://www.cygwin.com/cygwin-ug-net/dll.html上用非常简单的“helloworld”示例尝试了这种方法。它似乎不起作用。#includeextern"C"__declspec(dllexport)