今天在公司代码里见识了一个骚操作 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mingl0280
V2EX    C++

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

  •  
  •   mingl0280
    mingl0280 2020-07-23 05:58:35 +08:00 7989 次点击
    这是一个创建于 1925 天前的主题,其中的信息可能已经有所发展或是发生改变。
    函数返回是个指针,并且后面预期这个指针要删的,下面是函数的返回代码:
    return (PUCHAR)(0x00001000);br />//( typedef PUCHAR unsigned char* )
    太骚了...真的太骚了...
    22 条回复    2020-09-02 15:56:24 +08:00
    blackdesk
        1
    blackdesk  
       2020-07-23 06:11:47 +08:00 via Android
    这稀奇在什么地方呢
    x1596357
        2
    x1596357  
       2020-07-23 07:06:32 +08:00 via iPhone
    不稀奇,这么低的地址,感觉是硬件初始化的东西。
    leimao
        3
    leimao  
       2020-07-23 07:27:31 +08:00 via iPhone
    反正不是 best practice,没事不要这么写
    mingl0280
        4
    mingl0280  
    OP
       2020-07-23 07:39:57 +08:00
    @x1596357 并不是硬件初始化,软件是运行在 Linux 上的,稍微做了一下跨平台而已.后面用完这个东西的时候,这行会导致意外地遇到 delete 0x1000 这种神奇的玩意儿.
    nightv2
        5
    nightv2  
       2020-07-23 07:46:03 +08:00 via Android
    这指针就不能删除吧
    gowk
        6
    gowk  
       2020-07-23 07:55:13 +08:00 via Android   8
    看成:今天在公司看见一个骚货…
    vk42
        7
    vk42  
       2020-07-23 08:14:40 +08:00
    看不出来骚在哪,也没有足够上下文。一般说骚操作应该也有巧妙的含义吧
    lechain
        8
    lechain  
       2020-07-23 08:16:44 +08:00 via Android
    这就骚操作了?那嵌入式 c 代码 shi 山里面绝对还有一大堆你没见过的“骚操作”(逃
    zjsxwc
        9
    zjsxwc  
       2020-07-23 08:27:59 +08:00
    Windows 的 c++吗, 0x00001000 有什么意义?
    zjsxwc
        10
    zjsxwc  
       2020-07-23 08:31:47 +08:00
    @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  
       2020-07-23 08:33:27 +08:00
    所以楼主维护的是一个 DOS 程序?逃
    widewing
        12
    widewing  
       2020-07-23 08:42:01 +08:00 via Android
    所以返回一个常数是什么意思?还没实现的函数?
    idealhs
        13
    idealhs  
       2020-07-23 09:17:22 +08:00
    所有现代操作系统下应用程序都操作的是自身被分配的逻辑地址吧,这个影响不到别的软件或者系统的。
    wangritian
        14
    wangritian  
       2020-07-23 09:59:24 +08:00
    这个地址上的内容是什么?可以确定每次编译后对应的内容一定放在那个地址?
    xyzzzz
        15
    xyzzzz  
       2020-07-23 10:15:53 +08:00   1
    可能通过链接脚本把某些东西放到了这个地址上哦?
    liuminghao233
        16
    liuminghao233  
       2020-07-23 12:23:09 +08:00 via iPhone
    看不出哪里骚
    只看到了屎山的脚
    LANB0
        17
    LANB0  
       2020-07-23 14:12:13 +08:00
    @lechain 做嵌入式的表示不背这锅,位操作、拿着指针可劲儿偏移访问各种数组结构体、来自内核的 offsetof 等等都是精巧设计。楼主这个算什么?除了从特定地址写 flash 这种特殊场景,根本就不可能这么玩儿
    lechain
        18
    lechain  
       2020-07-23 21:43:01 +08:00 via Android
    @LANB0 不好意思对你造成误会了,我说的不是嵌入式精巧的地方,是“shi 山”
    mingl0280
        19
    mingl0280  
    OP
       2020-07-23 22:27:18 +08:00
    @zjsxwc
    @wangritian
    @xyzzzz 都不是,就是屎代码(这个人离职之前搞出了一大堆狗屎代码,全组都在慢慢给丫的收拾烂摊子)
    mingl0280
        20
    mingl0280  
    OP
       2020-07-23 22:28:23 +08:00
    @LANB0 最离谱的是,这根本不是嵌入式代码,嵌入式的代码在另外一个分支上,那个分支除了我们几个看得懂 C51 和 Keil 的没人敢碰,所以代码质量比这个玩意儿高一大截...
    rohgeo
        21
    rohgeo  
       2020-07-24 13:18:24 +08:00
    返回一个固定的地址?。。。
    sl0000
        22
    sl0000  
       2020-09-02 15:56:24 +08:00
    这种一般都出段错误
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     994 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 19:01 PVG 03:01 LAX 12:01 JFK 15:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86