V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bp0  ›  全部回复第 6 页 / 共 15 页
回复总数  298
1  2  3  4  5  6  7  8  9  10 ... 15  
2017-09-25 13:50:33 +08:00
回复了 cdoco 创建的主题 Markdown Markdown 语法详解
默默收藏就好
2017-09-13 08:44:48 +08:00
回复了 dsg001 创建的主题 程序员 不断有新注册的 gmail 关联到我的邮箱是啥原因?
坐等收一批垃圾广告吧。
2017-08-11 10:19:29 +08:00
回复了 Weny 创建的主题 分享发现 昨天和北方的哥们聊天,他们居然不吃黄鳝和鳗
@zpf124 东北的烧麦也是下面 2 种。
2017-08-09 23:24:59 +08:00
回复了 selrain 创建的主题 程序员 预算<10000,各位大佬来看看配什么电脑
刚想说现在显卡太贵,内存太贵不着急就等等吧。

结果是“配”笔记本
2017-08-09 23:24:03 +08:00
回复了 nazor 创建的主题 问与答 想入个单反相机,预算 2w 左右,请个老司机带路
60D 在家吃灰,现在出去玩都是带手机随便照照而已。

如果真心想玩,直接 5D4 在加镜头吧。
3 年前开始跑步,现在每个月 100 公里+,包括一个马拉松。
如果绩效的要求只是技术,那么从 A 变 C 是不合适的。如果是多维度的,那么为什么其领导还是打了 A 呢?就因为他也离婚找了其他人?且不说你知道人家为什么离婚吗?所以,个人觉得更合理的解释应该是该公司的绩效考核中就没有类似的规定。如果有,那么就是其领导的问题,本来就不应该打 A 的,结果给了 A。

任何以道德更改绩效的都是耍流氓,因为道德是要求自己的,不是要求别人的。


但是,如果那个男人的行为不符合公司的价值观。那么就应该在发生这个事情的时候马上处理,而不是等到所谓年底考核的时候以绩效为要挟。那么,为什么没有当时处理?感觉那个男人被白白骗了一年。


最后,个人非常鄙视,不要孩子还要谈低抚养费的行为。
2017-06-27 18:43:57 +08:00
回复了 scinart 创建的主题 C 求 c++大神帮忙看下这段代码为啥不崩
考虑一下 vector 空的情况下直接用下标访问会发生什么事情
2017-06-24 11:45:34 +08:00
回复了 NullMan 创建的主题 C C 语言:释放动态分配的内存,为何还能访问?
@geelaw 如果你不关心 page 怎么被 decomitted 的,又如何保证你说的方法一定有可移植性呢?到其他系统中 page 没有被 decomitted,这个时候应该怎么办?

而且我从没有说过要掩盖双重释放的问题。就像你提供的资料上说的,这种问题是逻辑错误。这种逻辑错误我们有很多方法去检查,编写代码时要求调用统一的释放接口,代码提交之前进行 review,CI 流程中进行的静态检查,单元测试。还有我上面提到的使用 Valgrind 工具 。甚至通过 C 实现 auto_ptr 这种类似的智能指针。这些都可以帮助我们避免包括双重释放在内的众多问题。

但是你却说让他 crash。问题是,如果它能马上 crash 还好。如果他没有马上 crash,或者一段时间以后在其他线程中 crash 了。你应该如何处理?当然我相信你们也会类似的流程保证代码质量,而不是简单的让它 crash。

问题是,你给人一句将 free 后的指针设置成 NULL 不好,我们不用。就像跟人说 goto 不好,我们不用是一样的。goto 真的不好吗?新手用 goto 可能出问题,大神用 goto 优化代码。用不用的好,全看你自己对系统的理解了。
2017-06-24 00:15:01 +08:00
回复了 NullMan 创建的主题 C C 语言:释放动态分配的内存,为何还能访问?
@geelaw 上面还说在 64 位机器上分配 3 个字节会有 13 个字节的 payload,这 13 个字节的 payload 的修改都可能无法查出,那么怎么检查修改分配给我的 3 个字节呢? 如果可以的话,麻烦你简单介绍一下 decomitted 的实现方式。

而且你说的双重释放可能导致的问题,让我想到将 free 后的指针设置成 NULL,恰恰可以避免了你说的严重错误。当然严格上说这种方法并没有解决这种错误。但是如果不将 free 后的指针设置成 NULL,如果后面再次 free 才会出现双重释放。也就是导致你说的问题。

我以前简单学习过 ptmalloc 的代码,至少在 ptmalloc 中有检查双重释放的代码的。而且针对上述问题,我更愿意用 Valgrind 这种工具去检查内存操作可能出现的问题。

说了这么多,原因只有一个,就是我无法想出将 free 的指针设置为 NULL 有什么不妥的或者是可能导致其他问题的地方。希望能跟你学习一下。
2017-06-23 23:39:05 +08:00
回复了 NullMan 创建的主题 C C 语言:释放动态分配的内存,为何还能访问?
@geelaw 你给的资料上面说的如何马上检查出是否访问超过分配大小的地址空间,而楼主是问为什么释放申请的内存后还能访问。 只要我继续访问申请的大小,页末对齐的方法就无法检查出来。因为我访问的就是 malloc 分配给我的地址。而且很怀疑这种方法的实用性,分配 1 个字节的空间也要占用一个页吗?如果没记错,一个页应该有 4kbytes 吧。

双重释放的问题确实无法有效解决,不过个人认为,修改已经释放的内存中的内容是比双重释放更严重的 bug。
2017-06-23 22:17:22 +08:00
回复了 NullMan 创建的主题 C C 语言:释放动态分配的内存,为何还能访问?
@geelaw 将 free 后的指针赋值成 NULL 的意义就是在于下面没有检查直接对指针进行读写操作。对指向 NULL 的指针进行读写操作会导致段错误。而如果没有将 free 后的指针赋值成 NULL,其会继续指向 malloc 时返回的地址。因为这个地址还是有效的,如果下面继续对其进行读写操作,是无法马上发现问题的。

尤其是涉及到多线程时,这个地址可能会被其他线程使用,而导致另外的线程异常。如果你只是排查另外线程的代码,是无法发现问题的根本原因的。
2017-06-22 12:41:58 +08:00
回复了 NullMan 创建的主题 C C 语言题目,造轮子,看谁的轮子最厉害,有牛奶奖励。
@yangff 确实没有,貌似应该是 @Livid
2017-06-22 11:51:12 +08:00
回复了 NullMan 创建的主题 C C 语言题目,造轮子,看谁的轮子最厉害,有牛奶奖励。
@misaka20038numbe 谢谢帮忙测试,更新了一下代码。这次应该没有问题了。


```c

void del_substr(char *str, const char *substr)
{
char *end;
const char *rawsub;

if (!str || !substr || !*substr)
return ;

end = str;
rawsub = substr;
while (*str) {
if (!*substr) {
while ((*str++ = *end++));
break;
} else if (*end == *substr) {
end++;
substr++;
} else {
end = ++str;
substr = rawsub;
}
}
}

```
2017-06-22 10:22:08 +08:00
回复了 NullMan 创建的主题 C C 语言题目,造轮子,看谁的轮子最厉害,有牛奶奖励。
@ryd994 问题的特殊性导致,不用下标也是可以完成题目要求的。这和 are[i]和*(arr+i)是不是等效没有关系。楼主用*(arr+i),本质上就是用下标。
2017-06-22 10:10:18 +08:00
回复了 NullMan 创建的主题 C C 语言题目,造轮子,看谁的轮子最厉害,有牛奶奖励。
'''c
void del_substr(char *str, const char *substr)
{
char *end;
const char *rawsub;

if (!str || !substr || !*substr)
return ;

end = str;
rawsub = substr;
while (*str) {
if (!*substr) {
while ( *str++ = *end++);
} else if (*str == *substr) {
end++;
substr++;
} else {
end = ++str;
substr = rawsub;
}
}
}

'''

没经过测试,楼主有兴趣可以测试一下。

另外,这个代码只能删除第一个符合要求的字串。如果要删除所有字串还需要再调整一下 while 中第一个 if 的内容。
2017-06-22 09:36:25 +08:00
回复了 NullMan 创建的主题 C C 语言题目,造轮子,看谁的轮子最厉害,有牛奶奖励。
循环找到子串的起始和结束位置,

找到起始和结束位置,则复制结束位置后面剩余的字符串即可。

如果没有剩余字符,直接在起始位置置 0。
2017-06-20 13:11:28 +08:00
回复了 yangxuan8282 创建的主题 VPS scaleway 出了 8 核 8G 的 arm64 机器
光编译不是用交叉编译的工具链就可以了吗?

除非还要运行一下看看效果吧。
1  2  3  4  5  6  7  8  9  10 ... 15  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1410 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 17:29 · PVG 01:29 · LAX 10:29 · JFK 13:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.