
c/c++
文章平均质量分 84
考古队码老板
这个作者很懒,什么都没留下…
展开
-
DDR读写源码测试
DDR读写程序:Uint32 memfill32( Uint32 start, Uint32 len, Uint32 val ){ Uint32 i; Uint32 end = start + len; Uint32 errorcount = 0; /* Write Pattern */ for ( i = start; i < end; i += 4 ) { *( volatile Uint32* )i = val;原创 2022-02-15 11:19:13 · 2102 阅读 · 1 评论 -
free 内存 注意点的事
对指针的操作严格按照这样: ptr = (struct XXXX *)malloc(num * sizeof(struct XXXX); .... free(ptr); ptr = NULL; 但是往往会在free的时候发生段错误.改一下:// 在分配之前加一句判断指针是否为空,防止产生内存泄露if (ptr == NULL) {ptr = (s原创 2016-12-20 09:51:08 · 15453 阅读 · 0 评论 -
细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
一.函数介绍:1、memcpy函数原型:extern void *memcpy(void *dest, const void *src, size_t count);用法:#include功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。注意:和strcpy相比,memcpy不是遇到转载 2016-12-20 08:52:28 · 541 阅读 · 0 评论 -
关于回调函数的那点事
1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户原创 2016-12-19 16:07:46 · 374 阅读 · 0 评论 -
3----结构体中使用柔性数组
结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势:(1)、不需要初始化,数组名直接就是所在的偏移;(2)、不占任何空间,指针需要占用int长度空间,空数组不占任何空间。“这个数组不占用任何内存”,意味着这样的结构节省空间;“该数组的内存地址就和它后面的元素地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当指针使用原创 2016-12-19 08:23:20 · 2402 阅读 · 0 评论 -
2-结构体的最后一个成员的定义-C语言中的柔性数组-
深入浅出C语言中的柔性数组在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间,例如:[cpp] view plain copy print?typedef struct test { int a;原创 2016-12-19 08:16:57 · 910 阅读 · 0 评论 -
1---结构体中最后一个成员为[0]长度数组的用法
结构体中最后一个成员为[0]长度数组的用法 2012-04-27 16:03:58分类: C/C++这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势: 1.不需要初始化,数组名直接就是所在的偏移 2.不占任何空间,指针需要占用int长度空间,空数组不占任何空间。 从herryhuang(Herry)的回复看,你只是看转载 2016-12-19 08:13:33 · 1694 阅读 · 0 评论 -
结构体中的malloc 与 free
结构体中动态内存的管理(malloc和free)C语言中内存的管理主要是依据malloc和free实现的,其中malloc主要是实现内存的分配,而free则是实现内存的释放。虽然这是我们已经很熟悉的,但是还是存在一些问题。特别是当结构体中存在指针的情况下,各种问题也就会展现出来。其中最大的问题是:结构体中指针变量没有指向一块合法的内存空间,就对指针参数进行操作,这也是很多C原创 2016-12-15 11:47:20 · 10497 阅读 · 0 评论 -
关于释放内存的那点事
我在linux下编写了一个简单的测试程序,编译可以通过,但是运行时报了“*** glibc detected *** free(): invalid pointer: 0x0000007fbffffa44 ***”错误,我将错误定位在free语句上,但是不知道为什么该语句会出错。请求各位帮忙。程序如下:int main(){ char *A="hello world";原创 2016-12-16 14:15:37 · 772 阅读 · 0 评论 -
更改结构体的内存字节对齐方式--经典
结构体字节对齐 http://blog.163.com/ecy_fu/blog/static/4445126200910603739941/ http://hi.baidu.com/skyland_lee/blog/item/45604bca81e1928cc91768d7.html,这篇文章比较专业地分析了字节对齐在VC和GCC的特点,写得非常不错。这两天我原创 2016-12-16 10:32:01 · 5148 阅读 · 1 评论 -
结构体对齐
结构体对齐C/C++数据对齐为了避免混淆,做如下规定,以下代码若不加特殊说明都运行于32位平台,结构体的默认对齐值是8,各数据类型所占字节数分别为char占一个字节int占四个字节double占八个字节。两个例子请问下面的结构体大小是多少?struct Test{ char c ; int i ;};这转载 2016-12-16 10:21:26 · 319 阅读 · 0 评论 -
c printf 缓冲区分析
printf行缓冲区的分析总结2013-08-18 12:29 5222人阅读 评论(7) 收藏 举报 分类:app program(9) 版权声明:本文为博主kerneler辛苦原创,未经允许不得转载。 最近在客户那调试串口的时候,read串口然后printf打印,单字符printf,发现没有输出,后来想起来printf这些标转载 2016-12-14 20:15:00 · 610 阅读 · 0 评论