sprintf函数地址拷贝
2013-12-16 00:00
141 查看
case 'd': //delete
ret = parse_get_username(path, &user_name);
ret_v = parse_get_validity(path, &uid_validity);
if(ret == TRUE){
if(ret_v == TRUE){
sprintf(sync_buf, "%s %s %s %s .%s\n", ttime, user_name, cmd, uid_validity, objectname);
free(uid_validity);
}else{
sprintf(sync_buf, "%s %s %s .%s\n", ttime, user_name, cmd, objectname);
}
ret = write(sync_fd, sync_buf, strlen(sync_buf));
if(ret <= 0){
sync_buf[strlen(sync_buf)-1] = '\0';
i_error("### sync_opmail.log write error! [cmd:delete args:%s]###",sync_buf);
}
free(user_name);
}
break;
这段函数中加粗部分:
开辟地址返回数据后sprintf格式化输出到变量sync_buf中就free掉uid_validity这个变量了,这没有影响后面的write对这段数据的操作。可以直接打印出sync_log的首位地址和uid_validity变量的地址,这两个地址是不相关的,也就是说:sprintf是一个拷贝过程。所以free是没有问题的。
ret = parse_get_username(path, &user_name);
ret_v = parse_get_validity(path, &uid_validity);
if(ret == TRUE){
if(ret_v == TRUE){
sprintf(sync_buf, "%s %s %s %s .%s\n", ttime, user_name, cmd, uid_validity, objectname);
free(uid_validity);
}else{
sprintf(sync_buf, "%s %s %s .%s\n", ttime, user_name, cmd, objectname);
}
ret = write(sync_fd, sync_buf, strlen(sync_buf));
if(ret <= 0){
sync_buf[strlen(sync_buf)-1] = '\0';
i_error("### sync_opmail.log write error! [cmd:delete args:%s]###",sync_buf);
}
free(user_name);
}
break;
这段函数中加粗部分:
开辟地址返回数据后sprintf格式化输出到变量sync_buf中就free掉uid_validity这个变量了,这没有影响后面的write对这段数据的操作。可以直接打印出sync_log的首位地址和uid_validity变量的地址,这两个地址是不相关的,也就是说:sprintf是一个拷贝过程。所以free是没有问题的。
相关文章推荐
- 完成字符串拷贝(sprintf、strcpy 及 memcpy 函数)函数之间的区别
- php中sprintf与printf函数用法区别解析
- golang基础-生成_拷贝exe文件、多包管理、init函数及其执行顺序
- 函数名&函数名取地址
- 基于C语言sprintf函数的深入理解
- 如何将调用的lib里的函数放到指定地址
- OSTaskStkInit_FPE_x86()--浮点仿真任务栈初始化函数(分段寻址的地址转换为线性地址)
- PHP sprintf() 函数
- 一个非常不错的Email地址校验函数
- c语言中sprintf()函数的强大用法
- C++ 虚函数表解析(比较清楚,还可打印虚函数地址)
- C++ 字符数组的拷贝、拼接、逆序输出 函数的实现
- Lea指令计算地址(用于四则混合运算),附上一个函数调用例子及其反汇编代码,很清楚
- sprintf_s函数用法
- 深入浅析php中sprintf与printf函数的用法及区别
- 类的使用-拷贝,函数,构造函数
- 函数重载,函数重写,虚函数,虚继承的概念以及深拷贝浅拷贝问题。
- org.apache.commons.beanutils.BeanUtils 拷贝属性为对象的属性,拷贝地址
- 一起talk C栗子吧(第一百二十三回:C语言实例--显示变量和函数的地址)
- 【C语言】 字符串的内存拷贝处理函数