入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

C语言使用回调函数解决内存申请和释放的问题

创建时间:2016-02-16 投稿人: 浏览次数:1261

http://www.oschina.net/question/23734_35213


C语言中,函数参数或者返回值中如果包含指针指向动态分配的内存区域,那么管理申请和释放就显得十分麻烦,一不小心就容易出错,今天突发奇想借鉴高级语言函数式编程的思想,其实C语言里的函数指针已经非常完美了,如果这样写,管理起来就会很方便,callback中无需关注buffer的释放。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <stdio.h> #include <stdlib.h> #include <string.h>   // 回调函数 // 使用这种技巧,在回调函数中就不用关注缓冲区的释放了 void callback(const char * buffer, int len) {     int i;     for (i = 0; i < len; i++) {         putchar(buffer[i]);     }     putchar(" "); }   void foo(void (* callback)(const char *, int)) {     char * buffer;     buffer = (char *)malloc(100);     memset(buffer, 0, 100);     strcpy(buffer, "Hello, World!");     callback((const char *)buffer, strlen(buffer));     free(buffer); }   int main() {     // 下面两种方式都行,不知道为什么     foo(&callback);     foo(callback);     return 0; }

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。