mingl0280
V2EX  ›  C++

今天在公司代码里见识了一个骚操作

  •  
  •   mingl0280 ·
    mingl0280 · Jul 23, 2020 · 8407 views
    This topic created in 2124 days ago, the information mentioned may be changed or developed.
    函数返回是个指针,并且后面预期这个指针要删的,下面是函数的返回代码:
    return (PUCHAR)(0x00001000);
    //( typedef PUCHAR unsigned char* )
    太骚了...真的太骚了...
    22 replies    2020-09-02 15:56:24 +08:00
    blackdesk
        1
    blackdesk  
       Jul 23, 2020 via Android
    这稀奇在什么地方呢
    x1596357
        2
    x1596357  
       Jul 23, 2020 via iPhone
    不稀奇,这么低的地址,感觉是硬件初始化的东西。
    leimao
        3
    leimao  
       Jul 23, 2020 via iPhone
    反正不是 best practice,没事不要这么写
    mingl0280
        4
    mingl0280  
    OP
       Jul 23, 2020
    @x1596357 并不是硬件初始化,软件是运行在 Linux 上的,稍微做了一下跨平台而已.后面用完这个东西的时候,这行会导致意外地遇到 delete 0x1000 这种神奇的玩意儿.
    nightv2
        5
    nightv2  
       Jul 23, 2020 via Android
    这指针就不能删除吧
    gowk
        6
    gowk  
       Jul 23, 2020 via Android   ❤️ 8
    看成:今天在公司看见一个骚货…
    vk42
        7
    vk42  
       Jul 23, 2020
    看不出来骚在哪,也没有足够上下文。一般说骚操作应该也有巧妙的含义吧
    lechain
        8
    lechain  
       Jul 23, 2020 via Android
    这就骚操作了?那嵌入式 c 代码 shi 山里面绝对还有一大堆你没见过的“骚操作”(逃
    zjsxwc
        9
    zjsxwc  
       Jul 23, 2020
    Windows 的 c++吗, 0x00001000 有什么意义?
    zjsxwc
        10
    zjsxwc  
       Jul 23, 2020
    @zjsxwc http://blog.sina.com.cn/s/blog_55215b6f0100m1ae.html

    在 WIN32 中,每个应用程序都可“看见”4GB 的线性地址空间,其中最开始的 4MB 和最后的 2GB 由操作系统保留,剩下不足 2GB 的空间用于应用程序私有空间。具体分配如下:0xFFFFFFFF-0xC0000000 的 1GB 用于 VxD 、存储器管理和文件系统; 0xBFFFFFFF-0x80000000 的 1GB 用于共享的 WIN32 DLL 、存储器映射文件和共享存储区; 0x7FFFFFFF-0x00400000 为每个进程的 WIN32 专用地址; 0x003FFFFF-0x00001000 为 MS-DOS 和 WIN16 应用程序; 0x00000FFF-0x00000000 为防止使用空指针的 4,096 字节。以上都是指逻辑地址,也就是虚拟内存。
    zjsxwc
        11
    zjsxwc  
       Jul 23, 2020
    所以楼主维护的是一个 DOS 程序?逃
    widewing
        12
    widewing  
       Jul 23, 2020 via Android
    所以返回一个常数是什么意思?还没实现的函数?
    idealhs
        13
    idealhs  
       Jul 23, 2020
    所有现代操作系统下应用程序都操作的是自身被分配的逻辑地址吧,这个影响不到别的软件或者系统的。
    wangritian
        14
    wangritian  
       Jul 23, 2020
    这个地址上的内容是什么?可以确定每次编译后对应的内容一定放在那个地址?
    xyzzzz
        15
    xyzzzz  
       Jul 23, 2020   ❤️ 1
    可能通过链接脚本把某些东西放到了这个地址上哦?
    liuminghao233
        16
    liuminghao233  
       Jul 23, 2020 via iPhone
    看不出哪里骚
    只看到了屎山的脚
    LANB0
        17
    LANB0  
       Jul 23, 2020
    @lechain 做嵌入式的表示不背这锅,位操作、拿着指针可劲儿偏移访问各种数组结构体、来自内核的 offsetof 等等都是精巧设计。楼主这个算什么?除了从特定地址写 flash 这种特殊场景,根本就不可能这么玩儿
    lechain
        18
    lechain  
       Jul 23, 2020 via Android
    @LANB0 不好意思对你造成误会了,我说的不是嵌入式精巧的地方,是“shi 山”😂
    mingl0280
        19
    mingl0280  
    OP
       Jul 23, 2020
    @zjsxwc
    @wangritian
    @xyzzzz 都不是,就是屎代码(这个人离职之前搞出了一大堆狗屎代码,全组都在慢慢给丫的收拾烂摊子)
    mingl0280
        20
    mingl0280  
    OP
       Jul 23, 2020
    @LANB0 最离谱的是,这根本不是嵌入式代码,嵌入式的代码在另外一个分支上,那个分支除了我们几个看得懂 C51 和 Keil 的没人敢碰,所以代码质量比这个玩意儿高一大截...
    rohgeo
        21
    rohgeo  
       Jul 24, 2020
    返回一个固定的地址?。。。
    sl0000
        22
    sl0000  
       Sep 2, 2020
    这种一般都出段错误
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2771 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 107ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    ♥ Do have faith in what you're doing.