V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhangzzzzz
V2EX  ›  程序员

C 语言如何 malloc 一块 volatile 的内存?

  •  
  •   zhangzzzzz · 2017-12-08 00:26:53 +08:00 · 1935 次点击
    这是一个创建于 2545 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://stackoverflow.com/questions/2304729/how-do-i-declare-an-array-created-using-malloc-to-be-volatile-in-c
    看了这个贴子,结果越看约蒙,求解。。

    volatile int * foo; // foo is a pointer to an int, volatile
    

    我怎么感觉这个声明也对
    另外有没有什么办法能看到这篇文章 http://www.embedded.com/story/OEG20010615S0107

    afpro
        1
    afpro  
       2017-12-08 00:44:51 +08:00
    volatile 内存是什么鬼。。。。。。
    zhangzzzzz
        2
    zhangzzzzz  
    OP
       2017-12-08 01:14:31 +08:00 via iPhone
    @afpro
    擦..好丢人,我都没注意,顺着就打上字了
    ryd994
        3
    ryd994  
       2017-12-08 01:58:54 +08:00 via Android
    volatile 的作用是阻止编译器优化,保证每次总是取实际内存
    所以只要指针是 volatile,编译器就明白你的目的,因此对这个指针的操作就不再优化
    话说回来,你为什么要 volatile 一个堆内存? volatile 一般是配合硬件 register 用的,因为这些 register 作为内存使用,但内容会被硬件修改。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1213 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:20 · PVG 07:20 · LAX 15:20 · JFK 18:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.