mingl0280
V2EX  ›  C++

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

  •  
  •   mingl0280 ·
    mingl0280 · Jul 23, 2020 · 8956 views
    This topic created in 2300 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
    blackdesk
    Jul 23, 2020 via Android
    1
    这稀奇在什么地方呢
    x1596357
    x1596357
    Jul 23, 2020 via iPhone
    2
    不稀奇,这么低的地址,感觉是硬件初始化的东西。
    leimao
    leimao
    Jul 23, 2020 via iPhone
    3
    反正不是 best practice,没事不要这么写
    mingl0280
    mingl0280
    OP
    Jul 23, 2020
    4
    @x1596357 并不是硬件初始化,软件是运行在 Linux 上的,稍微做了一下跨平台而已.后面用完这个东西的时候,这行会导致意外地遇到 delete 0x1000 这种神奇的玩意儿.
    nightv2
    nightv2
    Jul 23, 2020 via Android
    5
    这指针就不能删除吧
    gowk
    gowk
    Jul 23, 2020 via Android❤️8
    6
    看成:今天在公司看见一个骚货…
    vk42
    vk42
    Jul 23, 2020
    7
    看不出来骚在哪,也没有足够上下文。一般说骚操作应该也有巧妙的含义吧
    lechain
    lechain
    Jul 23, 2020 via Android
    8
    这就骚操作了?那嵌入式 c 代码 shi 山里面绝对还有一大堆你没见过的“骚操作”(逃
    zjsxwc
    zjsxwc
    Jul 23, 2020
    9
    Windows 的 c++吗, 0x00001000 有什么意义?
    zjsxwc
    zjsxwc
    Jul 23, 2020
    10
    @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
    zjsxwc
    Jul 23, 2020
    11
    所以楼主维护的是一个 DOS 程序?逃
    widewing
    widewing
    Jul 23, 2020 via Android
    12
    所以返回一个常数是什么意思?还没实现的函数?
    idealhs
    idealhs
    Jul 23, 2020
    13
    所有现代操作系统下应用程序都操作的是自身被分配的逻辑地址吧,这个影响不到别的软件或者系统的。
    WaldenHorizon
    WaldenHorizon
    Jul 23, 2020
    14
    这个地址上的内容是什么?可以确定每次编译后对应的内容一定放在那个地址?
    xyzzzz
    xyzzzz
    Jul 23, 2020❤️1
    15
    可能通过链接脚本把某些东西放到了这个地址上哦?
    liuminghao233
    liuminghao233
    Jul 23, 2020 via iPhone
    16
    看不出哪里骚
    只看到了屎山的脚
    LANB0
    LANB0
    Jul 23, 2020
    17
    @lechain 做嵌入式的表示不背这锅,位操作、拿着指针可劲儿偏移访问各种数组结构体、来自内核的 offsetof 等等都是精巧设计。楼主这个算什么?除了从特定地址写 flash 这种特殊场景,根本就不可能这么玩儿
    lechain
    lechain
    Jul 23, 2020 via Android
    18
    @LANB0 不好意思对你造成误会了,我说的不是嵌入式精巧的地方,是“shi 山”😂
    mingl0280
    mingl0280
    OP
    Jul 23, 2020
    19
    @zjsxwc
    @wangritian
    @xyzzzz 都不是,就是屎代码(这个人离职之前搞出了一大堆狗屎代码,全组都在慢慢给丫的收拾烂摊子)
    mingl0280
    mingl0280
    OP
    Jul 23, 2020
    20
    @LANB0 最离谱的是,这根本不是嵌入式代码,嵌入式的代码在另外一个分支上,那个分支除了我们几个看得懂 C51 和 Keil 的没人敢碰,所以代码质量比这个玩意儿高一大截...
    rohgeo
    rohgeo
    Jul 24, 2020
    21
    返回一个固定的地址?。。。
    sl0000
    sl0000
    Sep 2, 2020
    22
    这种一般都出段错误
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2579 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 11:01 · PVG 19:01 · LAX 03:01 · JFK 06:01
    ♥ Do have faith in what you're doing.