64bit专题提供64bit的最新资讯内容,帮你更好的了解64bit。
将应用程序从32位移动到64位时,会增加内存使用量? 我知道指针的大小会加倍,我怀疑字符串中的字符是“聚集”以更有效地使用内存(所以不会使用更多的内存). 内存使用量还会增加吗?有没有它会减少,或非算术运算会看到速度的好处? 你可能会看到额外的对齐,在这里和那里花费一些额外的字节.由于操作数中的64位常量,代码可能会更大. 至于速度,由于内存使用量增加,您可能会遇到速度减慢. CPU缓存将更快填满
这是我的代码: HWND WebformCreate(HWND hParent, UINT id) { return CreateWindowEx(0, WEBFORM_CLASS, _T("about:blank"), WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE, 0, 0, 100, 100, hParent, (HM
在 Linux进程中,每个线程都有自己的堆栈.除此之外,每个线程的本地还有什么.我已经阅读过诸如文件分配表之类的内容……有人可以向我提供一个特定于线程的内容列表以及它们如何在内存中排列. 其次,我注意到当我将一个堆栈分配给一个线程时(参见下面的代码),在我分配的堆栈地址(stackAddr)之后,线程函数中第一个变量的地址在某种程度上是完全字节的.我认为这是因为堆栈的顶部是分配的堆栈内存的结束地址
在 Windows 7 32位下运行时,以下代码将导致硬故障: void CTestView::OnDraw(CDC* /*pDC*/) { *(int*)0 = 0; // Crash CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TO
背景:我实现了一种随机算法,需要随机排序才能获得最佳收敛.但是,这样做显然会破坏内存局部性.我发现通过预取下一个迭代的数据,性能下降最小化. 我可以使用_mm_prefetch以简单的,主要是OS编译器 – 可移植的方式预取n个缓存行 – 但是缓存行的长度是多少?现在,我正在使用64的硬编码值,这在x64处理器上似乎是现在的常态 – 但我不知道如何在运行时和a question about thi
我在Visual Studio 2012/13中调试C x64单元测试时遇到困难. 对于Win32和x64,我的单元测试项目构建完美,但是在调试测试时,符号被加载但是断点集被完全跳过并且程序永远不会暂停,就像刚刚运行测试时发生的那样. 如果我为Win32构建单元测试项目,则会触发断点,我可以像往常一样进行调试. 在x64中是否有用于调试单元测试的特殊设置?从项目的默认Win32设置复制属性,并删除
似乎暗示每个人都知道“非脆弱的ABI”是什么 – 考虑到 Xcode中所涉及的频率和事实性质.例如… Subscript requires size of interface node which is not constant in non-fragile ABI 要么 Select the Objective-C ABI version to use. Available versions a
从64位平台切换到32位平台(两者都是CentOS)后,我得到的整数常量对于以下代码行的’long’类型错误来说太大了 uint64_t Key = 0x100000000; 铸造价值并没有帮助.我究竟做错了什么? 谢谢 您需要使正确类型的整数常量.问题是0x100000000被解释为int,并且转换/赋值没有帮助:常量本身对于int来说太大了.您需要能够指定常量是uint64_t类型: uint
(机器是x86 64位运行SL6) 我试图看看我是否可以在我的64位机器上优化memset.根据我的理解,memset逐字节地设置并设置值.我假设如果我以64位为单位,它会更快.但不知何故需要更多时间.有人可以看看我的代码并提出原因吗? /* Code */ #include <stdio.h> #include <time.h> #include <stdint.h> #include <str
我编写了程序,并在Intel Core i5-2500上的Visual Studio 2010中为x64和x86平台编译. x64版本需要大约19秒才能执行,x86需要大约17秒钟.可能是这种行为的原因? #include "timer.h" #include <vector> #include <iostream> #include <algorithm> #include <string>
我想从bat文件中编译VS2008 x64. 当我在VS2008中编译32位时,我调用vsvars32.bat. 在x64中需要调用什么来编译? 现在建议不要使用vsvar32.bat并使用SetEnv.cmd来设置你的构建环境.传递/ x64参数以选择64位构建环境.这个 MSDN page有一些关于SetEnv.cmd的更多信息.
32位系统是否有64位unix时间戳转换的C实现?我需要将struct tm转换为64位整数,反之亦然,包括闰年,时区,UTC.还需要它可移植,至少对于GNU / Linux和Windows. 你需要: typedef long long time64_t; time64_t mktime64 (struct tm *t); struct tm *localtime64_r (const ti
在写入HKLM注册表配置单元时,要在Vista中弹出UAC对话框,我们选择不使用Win32注册表API,因为缺少Vista权限时,我们需要以管理员权限重新启动整个应用程序.相反,我们做这个技巧: ShellExecute(hWnd, "runas" /* display UAC prompt on Vista */, windir + "\\Reg", "add HKLM\\Software\\C
我需要以16位字节读写.我做的只是使用cmpxchg16,这是所有x64处理器可用,除了我认为一个晦涩的AMD. 现在的问题是对齐16个字节的值,只有使用cmpxchg16(它的行为就像一个完整的内存屏障)才能修改,是否有可能读取一半的旧数据和一半的新数据的16位元的位置? 只要我用SSE指令读取(所以线程在读取的中间不能中断),我认为这是不可能的(即使在多处理器numa系统中)读取看到不一致的数
好的,这是一个奇怪的问题: >我使用无符号长整型变量(我使用甚至更长的变量,具有相同的效果) >我需要能够存储64位整数(sizeof返回8,这很好) 但是,当我尝试转换为1< 63的值,并执行一些简单的按位操作时,我奇怪地似乎正在获得负值.为什么? 我的测试代码: unsigned long long c = 0; c |= 1l << 56; printf("c = %lld\n",
我只是想知道如何我的笔记本电脑是64或32位机器. (这是64). 所以,我想到打印如下: int main() { printf("%d",sizeof(int)); } 结果是4,这似乎很奇怪(因为它是64位机器) 但是,当我打印这个: int main() { printf("%d",sizeof(int*)); } 结果是8,这更有意义. 问题是: 由于我使用的是64位机器,所以不应该
我有一个32位应用程序,我计划在64位 Windows 7上运行. 在此阶段,由于依赖于第三方功能,我无法将整个应用程序转换为64位. 但是,我想在我的SSE优化中访问xmm9-xmm15寄存器,并且在执行我的应用程序时也使用64位cpus提供的附加寄存器. 这有可能用一些编译器标志来实现吗? 在我看来,最好的方法是将程序划分为多个可执行文件.编译为64位的EXE可以与另一个32位EXE通信,使用
64位系统上的指针仍然是4字节对齐(类似于32位系统上的双精度)?还是他们注意到8字节对齐? 例如,在64位系统上,以下数据结构有多大: struct a { void* ptr; char myChar; } 指针由8个字节对齐,为字符产生7个字节的填充(total = 8 8 = 16)?或者指针是4字节对齐(4字节4字节),导致3个字节的填充(total = 4 4 4 =
这个函数被埋在一个复杂的嵌套中,所以实际上找到原因可能超出我能提出的任何要求,但我想知道是否有人可能能够提供一些关于我如何进行调试的提示. 这是我遇到问题的代码的要点 //func1.c somestruct* func1(somestruct* mystruct) { printf("func1: %p, %i\n", mystruct, mystruct->foo); retu
我正在尝试在Visual Studio 2010中使用Boost.Test,而我在使其工作时遇到了一些麻烦.这是来源: #include "stdafx.hpp" #define BOOST_TEST_MODULE (main) #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_CASE(morphology) { BOOST_CH