memcpy和memmove的区别
其实很早就知道两个函数其中有一个在面临内存覆盖时行为有点特别, 但是工作中很少用到此场景, 也就没有深究. 现在居然面试遇到了, 那就把研究清楚吧.
- memcpy 简单粗暴, 不考虑内存重叠问题. 后果程序员自负
- memmove 比memcpy多了层检查内存重叠的考虑,如果发现重叠, 则反向拷贝, 性能和memcpy基本一样. 就是多了个检查是否重叠的代码.
综上所述, 以后干脆就用memmove吧. 省的那么多事. 反正性能几乎没有损失.
其实很早就知道两个函数其中有一个在面临内存覆盖时行为有点特别, 但是工作中很少用到此场景, 也就没有深究. 现在居然面试遇到了, 那就把研究清楚吧.
综上所述, 以后干脆就用memmove吧. 省的那么多事. 反正性能几乎没有损失.
ulimit -c unlimited/etc/profile 文件中追加一行 ulimit-c unlimited/proc/sys/kernel/core_pattern 为 /data/coredump/core.%e.%p
其中%e表示程序名,%p表示进程id,路径为/data/coredump目录-g选项,这个才能用gdb调试的coredumplinux使用加载gdb加载coredump文件进行调试mac使用lldb加载coredump文件进行调试mac core文件均存在/cores目录下,linux core文件存在当前工作目录。ulimit -c unlimited来设置core文件生成路径。ulimit -c size来设置core文件大小。ulimit -c 0来禁止生成core文件。windows 请查看这篇文章 Windows C++ 程序崩溃收集工具
这几年一直在linux上开发,用的gcc版本比较高,最近把gcc降到4.8.5(centos 7默认版本)后,出现了一些成员变量初始化的问题。
看示例:
一、配置环境
• 安装XCode
https://developer.apple.com/xcode/
xcode-select --install
• 安装JDK
https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html
• 安装Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
• 安装工具
brew install git python make curl
• 安装MacPort
https://www.macports.org/install.php
• 安装工具
POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
二、创建磁盘镜像
一、配置环境
二、配置环境变量.bash_profile
| |
四、下载AOSP源代码 • 下载repo并设置权限
在同一个Android.mk中编写就行:
| |
| |
killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。
今天下班后收拾东西时,看到很久没有使用的移动硬盘,通电后在资料中翻出这样一段话,从04年到11年的几乎每个压缩包中都有。 但从12年往后就越来越少,最近这几年就不在加这个注释,一是压缩软件由之前的winrar换成了7zip,系统慢慢换成linux,二是一直在忙于生计,似乎离理想越来越远。 今年碰到疫情,在老家待了几个月,觉得现在的状态似乎不是自己想要的,其实包括最近这两年,似乎一直有这样的想法。 那么自己的想要的到底是什么呢? 十岁时的电视里成功经理人的梦想?还是十五岁时看到的介绍比尔盖茨的用技术改变世界的梦想? 是刚工作时的CTO?还是最近的多多赚钱? 似乎都是,又似乎都不是。 没工作时,想着先找个工作,养家糊口。 有工作时,想着能不能做的更好一些,最后发现努力半天,因为诸多原因一次次报废。