V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  exiahan  ›  全部回复第 11 页 / 共 12 页
回复总数  233
1 ... 3  4  5  6  7  8  9  10  11  12  
2017-05-10 01:42:07 +08:00
回复了 di94sh 创建的主题 C 一个 c 风格字符串与指针问题
@exiahan 才看到 19 楼的说法,感觉我说偏了 T_T。。19 楼正解,按规范来,未定义那就依赖于具体编译器实现,不用才对,真要用那就是针对不同平台的 tricky 了。
2017-05-10 01:20:03 +08:00
回复了 di94sh 创建的主题 C 一个 c 风格字符串与指针问题
Linux 的话 char *s1="hello" 和 char *s2= "xllo"指向的.rodata,.rodata 段运行时没有写权限,而你尝试 *s1 = *s2 是在尝试去写 s1 指向的.rodata 的一个字符串第一个字节,运行时肯定会报错。

这里牵扯到一般编译链接后生成的可执行文件各段的读写执行权限问题,linux 上.rodata 段现在一般装载到内存后没有写权限,运行时的 stack 具有读写权限(如果不开 NX 可能还有执行权限。)

楼主可以反编译看看定义成 char *s1 = "hello"和 char s1[] = "hello"的区别,32 位机器的话,第一个 s1 在其所属函数的 stack 上只会是一个指针,其值指向.rodata 段的一个字符串"hello"的第一个字节;而第二个在运行时会在其所属函数的 stack 上开辟至少 strlen("hello") + 1 的空间(之所以说至少是因为有时候编译器有做对齐优化),所以 s1[]的 s1 在运行时是指向 stack 上存储 ‘ h ’, ‘ e ’, ‘ l ’, ‘ l ’, ‘ o ’, ‘\0 ‘的一块 stack 上内存的最低地址,也就是存放'h'的地方。

至于下面这段:
char s[]=“ xello ”;
char *p=s ;
*p=`h`;

*p = 'h'可以成功是因为前一个操作 char *p=s 会导致 p 在 stack 上占有 sizeof(char *)个字节,所以*p='h'会让计算机把'h'放到 p 在 stack 上占有的最低字节的地方。

PS: 上面君假设你的代码至少位于 main 或者一个函数内,如果是一个全局变量,那操作是在.data 段上而不是在 stack 上,最大的改变是寻址方式和可能的对齐操作。
2017-04-09 15:50:48 +08:00
回复了 YvesX 创建的主题 Android 用户向 Google 抱怨国产 app 强制索取权限,官方:不爽不要装
Google 有能力做( 4.3 时候昙花一现的 AppOps ),但是没有做。估计有其他什么原因吧(或者说 Android 免费的代价?{猜的
2017-03-20 18:55:59 +08:00
回复了 call43848 创建的主题 站长 你的博客或网站用 Google PageSpeed 测一下能得 100 分么?
@izhaohui 我 28 (;´༎ຶД༎ຶ`),莫非也是 hexo 或者 jekyll 什么生成的?(・∀・)
2016-10-22 13:41:59 +08:00
回复了 karnaugh 创建的主题 Android AndroidStudio 最近闹不住了啊。行不行了还。。
没用过 Mac ,插个题外话, Mac 的 AndroidStudio 也会在用户主目录下遗留很多个“.AndroisStudioXXX ”的隐藏文件夹么?( XXX 是版本号)
2016-09-14 18:00:28 +08:00
回复了 jadecoder 创建的主题 Android 终于对 Android 绝望了,再铁粉也忍不了国内的应用环境
Android 系统自带的系统控制真心是一点用也没有,估计很多人都遇到过了吧,有些软件(嘛,就不点名了)会在启动时直接弹框告诉你,我要某个权限,如果你不给,我就不给你用。。。一个好的权限控制应该是给应用制造一个已经获得权限的假象(比如请求是通过了,但是只返回空数据, Xposed 里的一些插件就是这种做法),而不是不负责任的一刀切直接拒绝调用,感觉 Google 在方面是在敷衍。
2015-08-16 14:41:45 +08:00
回复了 speed 创建的主题 C C 语言是不是应用已经不是很广泛了?
C依然很广泛,C一直都在默默的托着脚本语言和一些高级语言如Java的runtime。另外写JNI不也要用C么。('・ω・')
2015-08-16 01:24:31 +08:00
回复了 ddjian 创建的主题 程序员 推荐 Android 手机,日常+学习开发,价位 2k 附近
如果不做安全只搞Apps开发,小米魅族一加什么的都随意,如果要做安全,Nexus没商量,OEM的逗比框架定制会妥妥的让你无奈。
2015-07-29 11:35:18 +08:00
回复了 exiahan 创建的主题 Node.js 请教关于 hexo new 的用法
嗯嗯,多谢楼上两只ლ(╹◡╹ლ),差不多知道要怎么做了~~
2015-04-22 20:24:53 +08:00
回复了 FindHao 创建的主题 Linux 有道词典发 linux 版本了
@felixonmars 问下用的是什么压缩文件管理器???
2015-04-14 19:44:59 +08:00
回复了 lex 创建的主题 程序员 算法不行是不是铁定进不了 Facebook 之类的大公司的?
@phoenixlzx ←_←
2015-03-26 21:34:28 +08:00
回复了 z742364692 创建的主题 程序员 求教:双显卡机器装 Linux 好痛苦
@alayii 啥机器,这么坑(;´༎ຶД༎ຶ`) gtx850M的本按照wiki一遍搞定(´・ω・`)
2015-03-22 01:20:29 +08:00
回复了 chinabrowser 创建的主题 Google 分享下自己创建的谷歌学术&谷歌网页反代:)
楼主好人。能用~
2015-03-15 16:33:08 +08:00
回复了 herozem 创建的主题 C C 语言是没有传址的, 对吗?
可以使用指向指针的指针,这样就能修改指针本身的值。但是这玩意用多了估计会很乱吧
2015-03-11 19:39:52 +08:00
回复了 halczy 创建的主题 Linux Linux 下的 Chromium 越做越难看
@RecursiveG 追加,已经搞定了,非gnome环境的话用lxapperance修改gtk字体就ok了~
2015-03-11 19:28:31 +08:00
回复了 halczy 创建的主题 Linux Linux 下的 Chromium 越做越难看
@RecursiveG 我是openbox,好像字体就算改了也没法子。。不过乱序确实搞定了,等下一版看看什么情况啦.thx~
2015-03-11 01:50:36 +08:00
回复了 halczy 创建的主题 Linux Linux 下的 Chromium 越做越难看
@halczy 和硬件加速好像无关,这个问题很恶心,要不是现在养成依赖加上Linux上浏览器实在没的选了我早就换浏览器了。。UI么我用的Window Manager,看起来还行,不管字体我用fontcfg强制全局都改成文泉驿了。
2015-03-11 00:26:49 +08:00
回复了 halczy 创建的主题 Linux Linux 下的 Chromium 越做越难看
38和41是不是用了系统标题栏和边框,不然chrome不会在左边有 “-口X”的吧。不过字体确实越来越不舒服。
1 ... 3  4  5  6  7  8  9  10  11  12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3538 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 01:00 · PVG 09:00 · LAX 18:00 · JFK 21:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.