1.4.1 C经验
1.4.1 C经验
vimer-hz
书是越读越薄的
展开
-
fwrite crash
pfeature->buffer对应的形参是char*,&(pfeature->buffer)应该改为(pfeature->buffer),否则会crash。原创 2023-04-15 18:56:11 · 123 阅读 · 0 评论 -
size_t在指针偏移中的应用
一般来说size_t的定义在.h里:typedef unsigned int size_t;来看一个例子:int main() { unsigned int *buf = (unsigned int*)malloc(1024); printf("buf:%x \n", buf); unsigned int *buf1 = (unsigned int*)(buf + 512); printf("buf1:%x \n", buf1); unsi原创 2021-08-04 17:54:40 · 527 阅读 · 0 评论 -
__user说明
# define __user __attribute__((noderef, address_space(1)))__user这个特性,即__attribute__((noderef, address_space(1))),是用来修饰一个变量的,这个变量必须是非解除参考(no dereference)的,即这个变量地址必须是有效的,而且变量所在的地址空间必须是1,即用户程序空间的。...转载 2019-12-30 15:46:53 · 1502 阅读 · 0 评论 -
__attribute__((aligned))
__attribute__ 语法的来源GNU C 的一大特色就是__attribute__ 机制。attribute可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。attribute 语法格式为: attribute ((attribute-list))当__attribute...转载 2019-12-27 18:30:13 · 2006 阅读 · 0 评论 -
char[0]在结构体中的应用
struct MyData { int nLen; char data[0];}; 在MyData结构中,data是一个数组名,但该数组没有元素;该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容);这种声明方法可以巧妙的实现C语言里的数组扩展...转载 2019-12-26 12:31:32 · 266 阅读 · 1 评论 -
strncpy发生stack corruption detected(-fstack-protector)栈溢出
代码:char line[MAX] = {0};strncpy(line,pBeginObj,(ptemp - pBeginObj + 1));log如下:解释:char *strncpy(char *dest, const char *src, int n)把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中0x746d498e86 -...原创 2019-12-20 23:40:44 · 3327 阅读 · 1 评论