- 博客(5)
- 收藏
- 关注
原创 strlen PK sizeof
Q:为什么我们在开辟malloc一块字符数组空间的时候,经常调用 memset函数进行全部'\0'操作了?A:因为使用计算长度的strlen函数,printf函数遇到'\0'字符才会中止.防止内存越界.printf函数也是遇到'\0'字符才会结束哦.前面提到字符数组,在来小谈一会.字符数组到字符指针的过程,是退化,即前者退化为了后者,为什么这么说, 因为字符数组存储的信息,是比字符指针的信息多的,什么时候发生退化,函数传参的时候就会发生。
2024-04-26 19:03:19
1223
1
原创 隐藏于水面之下的extern
上面可知,C库是按照C语言的规则来编译代码的,当C库某一个头文件被CPP文件所include 的时候,就会原地展开,编译的时候,对这些函数的声明等就会按照CPP的规则来编译,当在链接阶段的时候,就会去寻找符号,但是发现找不到,一个是CPP的符号,一个是C的符号,不对应,所以就会报错。对于extern val 这样的语句,是声明变量的语句,表示这个变量在外部被定义。这样的语句,就是声明一个变量,其实不是,声明一个变量,表示这个变量是没有内存的,只是告诉编译器,我即将要有一个变量,但是不是现在就需要。
2024-04-14 15:30:22
989
1
原创 机会留给有准备的人,emplace_back也是一样
其实就一句话, emplace_back ( _Valty &&... _Val)留了一个心眼,这个心眼,使它在某一情况下放入vector的时候,变得高效<直接在vector内部调用构造函数。。原理就是可变参数+std::forward实现完美转发。调用构造函数,怎么调用,创建对象就会调用构造函数啊。这个类够简单吧,当我们创建age对象的时候,就会调用构造函数。like。
2024-04-10 20:27:11
396
1
原创 关于dlsym的总结
对于dlopen、dlsym,dlclose等这一些列的函数,可能大家几乎很少能用到,可能有的朋友见都没有见过,我也是在别的项目(sylar的hook模块)上遇到的,刚看到的时候,一头雾水,这是什么玩意儿?经过漫长的岁月,我终于了解一点了。
2024-01-24 15:50:44
3753
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人