草庐IT

C++ size_t 或 ptrdiff_t

如果您有以下代码,其中p是一个指针:p=p+strlen(p)+size_t(1);由于strlen()和size_t都是size_t,我应该将代码转换为ptrdiff_t吗?p=p+(ptrdiff_t)(strlen(p)+size_t(1));如果是,为什么?谢谢,格雷格 最佳答案 std::ptrdiff_t已签署。std::size_t未签名。如果p可能有负长度,则将strlen(p)转换为ptrdiff_t是有意义的,这是不可能的。但是,如果p足够大(例如,在大多数32位平台上大于2,147,483,647字节),则该转

c++ -::operator new(size_t) 是否使用 malloc()?

::operatornew(size_t)是在内部调用malloc(),还是直接使用系统调用/操作系统特定的库调用?C++标准怎么说?在thisanswer它说:malloc()isguaranteedtoreturnanaddressalignedforanystandardtype.::operatornew(n)isonlyguaranteedtoreturnanaddressalignedforanystandardtypenolargerthann,andifTisn'tacharactertypethennewT[n]isonlyrequiredtoreturnanaddr

c++ - 将静态库转换为共享库(从 libsome.a 创建 libsome.so): where's my symbols?

这个问题的标题是exactdupe,但该问题的答案对我没有帮助。我有一堆目标文件打包在一个静态库中:%g++-std=c++98-fpic-g-O1-c-ofoo.ofoo.cpp%g++-std=c++98-fpic-g-O1-c-obar.obar.cpp%ar-rclibsome.afoo.obar.o我想从libsome.a而不是目标文件生成libsome.so,但是这个库真的是准系统:%g++-std=c++98-fpic-g-O1-shared-olibsome.solibsome.a%nm-DClibsome.so0000xxxxA_DYNAMIC0000xxxxA_GL

c++ - C++ 有自由函数 `size(object)` 吗?

似乎大多数人查找string大小的方法是他们只是使用my_string.size()并且它工作正常。好吧,我最近在类里面做了一个作业...if(size(my_string)而不是......if(my_string.size()但令我惊讶的是,我相信他正在运行较旧的编译器的讲师无法运行该行代码。在我的编译器上,它可以两种方式工作,我不太清楚为什么。一个完整的程序(两者都输出4):#include#includeusingnamespacestd;intmain(){stringmyvar="1000";cout是否有人可以阐明为什么我的问题解决方案在我的机器上有效,但在我的教授上却无

ruby-on-rails - 如何在 localhost/<my_port> 上运行 Rails 3 应用程序?

要在Windows上运行Rails应用程序,我会这样做:cdrails服务器我看到以下内容:=>BootingWEBrick=>Rails3.0.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-Ctoshutdownserver[2011-01-1220:32:07]INFOWEBrick1.3.1[2011-01-1220:32:07]INFOruby1.9.2(2010-08-18)[i386-mingw32][2011-01-1220:32:07]INFOWEBric

.net - 测试 "My Documents"文件夹重定向

是否可以在.net中测试文件夹重定向?我不是指重新分析点/连接点,我的意思是当文件夹(通常是我的文档)被重定向到服务器时。在这种情况下,如果您正在遍历PC的文件夹系统,您将在到达文件夹的本地版本时遇到IO错误。因此,能够测试“我的文档”文件夹重定向是很有用的,以便能够采取行动(跳过文件夹、跳转到服务器等)。我知道我可以使用以下方法获取我的文档的位置(但仅限于当前用户)Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)但这并不能帮助我提前跨(可能)多个用户进行测试。我需要使用SHGetKnownFolderPa

c++ - 如何判断一个进程 "virtual size"(WinXP)?

我有一个需要大量内存的程序,一旦达到2GB虚拟地址空间,它就会崩溃。Sysinternals进程资源管理器将其显示为“虚拟大小”列。我如何用C(或C++)代码确定这个“虚拟大小”?好的,我必须查询“虚拟字节”的性能计数器。Perfmon将查询字符串(或它的调用方式)显示为,例如,在我的德语WinXP安装中为'\Process(firefox)\VirtuelleGröße'。如何确定“当前进程”的查询字符串,是否有非本地化名称? 最佳答案 根据MSDN:MemoryPerformanceInformationPROCESS_MEMO

windows - 64 位 Windows API : what is the size of a C/C++ "DWORD"?

我只安装了32位Windows,所以我无法自行验证。如果我没理解错的话,MicrosoftAPI中各个地方使用的DWORD是指原来的16位字,与现在的硬件架构无​​关?所以看起来是32位的DWORD,即使我最终编译并链接我的应用程序以在64位Windows中运行,也会保持32位?还是DWORD会变成128位宽? 最佳答案 唯一在32和64之间改变大小的是指针。所以DWORD保持32位宽。有些东西不是立即明显的指针,例如句柄、LPARAM、WPARAM。但是这三个改变宽度,因为它们实际上持有指针。

windows - "Extend my Windows desktop onto this monitor"以编程方式

我希望能够通过代码设置“将我的Windows桌面扩展到该显示器上”。PowerShell脚本将是理想的选择。WMI似乎是前进的方向,但我对WMI的了解为零。 最佳答案 Windows7、8和10应该附带一个小程序来执行此操作:displayswitch.exe。Thispage列出以下参数:displayswitch.exe/internalDisconnectprojector(sameas"Showonlyon1"fromtheDisplayPropertiesdialog)displayswitch.exe/cloneDupl

ruby-on-rails - 为什么安装 Ruby on Rails 会产生错误 "size of array ' ruby​​_check_sizeof_voidp' is negative”?

在安装RubyonRails时(通过geminstallrails),您可能会收到以下错误消息:c:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:109:14:error:sizeofarray'ruby_check_sizeof_voidp'isnegative还会有很多这样的警告:c:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:1333:12:warning:casttopointerfromintegerofdifferentsize[-Wint-to-pointer-cast]还有一个错误c:/Ruby193