c/c++语言开发共享c:在64位应用程序中使用32位指针?

我想知道我是否可以在64位应用程序中使用32位指针?

我们学校的项目只允许我们将c程序编译成64位应用程序,并测试我们的程序的速度和内存使用情况。 但是,如果我能够使用32位指针,那么我的程序将比64位消耗更少的内存,也许它运行得更快(更快到malloc?)

谢谢您的帮助

    它可能会减少内存使用量 – 但是它不会提高速度,因为你必须将短指针转换为绝对指针,这会增加开销,同时你也失去了类型检查的大部分好处。

    它看起来像这样:

    typedef unsigned short ptr; ... // pre-allocate all memory you'd ever need char* offset = malloc(256); // make sure this size is less than max unsigned int // these "pointers" are 16-bit short integer, assuming sizeof(int) == 4 ptr var1 = 0, var2 = 4, var3 = 8; // how to read and write to those "pointer", you can hide these with macros *((int*) &offset[var1]) = ((int) 1) << 16; printf("%i", *((int*) &offset[var1])); 

    有了更多技巧,你可以发明自己的brk()来帮助从偏移中分配内存。

    这值得么? IMO没有。

    使用GCC?

    -mx32选项将int,long和指针类型设置为32位,并为x86-64体系结构生成代码。 (Intel 386和AMD x86-64选项):

    然后基准:)

    需要了解更多c/c++开发分享c:在64位应用程序中使用32位指针?,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享c:在64位应用程序中使用32位指针?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/978876.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐