败犬日报 2026-01-05
败犬日报 2026-01-05
1. 这两天重度使用 opencode 后引发的一些关于 agent 的感想(文章)
https://mp.weixin.qq.com/s/rY5yqB3TE0o7LcnC4vkfpQ
2. Rust 与 C 性能:一个汇编函数之谜(文章)
https://ohadravid.github.io/posts/2025-12-rav1d-faster-asm/
3. Bjarne Stroustrup:现代 C++ 的跨世纪演进(演讲全文)(文章)
https://zhuanlan.zhihu.com/p/1990476964423820269
讲技术的部分有资源管理,基于概念的泛型编程,模块,核心指南。
4. 面试题:memmove 怎么实现
memmove 是允许部分重叠的 memcpy,只要判断源和目标指针的大小,然后选择正向拷贝或反向拷贝,代码如下:
cpp
void memmove(char* dst, const char* src, int n) {
if (dst < src) {
for (int i = 0; i < n; i++) {
dst[i] = src[i];
}
} else {
for (int i = n - 1; i != -1; i--) {
dst[i] = src[i];
}
}
}实测这两个简单的 for 循环,不论正向反向,都能编译器自动向量化,性能是没问题的。
往期讲过独立变量比较地址是未指定行为,这时候正向反向的效果都一样,所以 dst < src 是没问题的。
要改进代码可以判断 dst == src 就直接 return,如果完全不重合可以直接调用 memcpy。