const char **ptr 与 char *ptr[] 的释放问题的探究
来源:互联网 发布:知乎电脑版下载官网 编辑:程序博客网 时间:2024/06/06 01:33
直接上代码
#include <iostream>#include <string>#include <string.h>#include <stdlib.h>#include <stdio.h>using namespace std;int main(){ char *data[] = {NULL}; const char **ptr = (const char**)malloc(sizeof(const char *) * 2); data[0] = (char *)malloc(sizeof(char)*5); data[1] = (char *)malloc(sizeof(char)*5); printf("--11-------%x\n", data[0]); printf("--11-------%x\n", data[1]); bzero(data[0], 5); bzero(data[1], 5); printf("--22-------%x\n", data[0]); printf("--22-------%x\n", data[1]); char cc1[] = "jian"; char cc2[] = "lian"; strcpy(data[0], cc1); strcpy(data[1], cc2); //data[0] = cc1; //data[1] = cc2; printf("--33-------%x\n", data[0]); printf("--33-------%x\n", data[1]); string str1 = data[0]; string str2 = data[1]; ptr[0] = str1.c_str(); ptr[1] = str2.c_str(); free(ptr); ptr = NULL; printf("--44-------%x\n", data[0]); printf("--44-------%x\n", data[1]); free(data[0]); data[0] = NULL; free(data[1]); data[1] = NULL; return 0;}
运行结果如下
若将代码中的strcpy改为指针赋值,则会报错。
总结:
(1)malloc与free配对使用,避免发生内存泄漏。但是如果free的不是malloc出来的空间,则会报错。
(2)const char **ptr, 由于对ptr[0]没有malloc,故不需free(ptr[0]),直接free(ptr)即可。
(3)char *ptr[],其数组成员进行了malloc操作,故要对数组里的成员进行free。
0 0
- const char **ptr 与 char *ptr[] 的释放问题的探究
- const char * ptr;char * const cp 的区别
- Char** ptr 到Char*的转换
- const char* ptr 到底是什么意思【转载的,从此不再蛋疼】
- 关于char *ptr;
- const char *|char const char * 与char * const 的区别
- const ptr与ptr const比较
- ptr = (char *)malloc(0)
- ptr = (char *)malloc(0)
- ptr = (char *)malloc(0)
- ptr = (char *)malloc(0)
- char *ptr = hello world
- const char*, char const*, char*const的区别问题
- const char*, char const*, char*const的区别与记忆
- const char *与char * const的区别
- const char *与char * const的区别
- const char*的问题
- 汇编byte ptr[BP]与word ptr[BX]的区别
- sdut 3257 Cube number
- 索尼Z2(L50t)刷CM12教程
- 按住Ctrl左击无法定位跳转到JDK底层代码实现类的解决方法
- 用c++实现单向链表和双向链表
- 你若顽强到底,一切皆有可能——谈工程师职业素养(《大话Java性能优化》前言)
- const char **ptr 与 char *ptr[] 的释放问题的探究
- MySQL入门--显示指定数据表的字段结构、插入指定字段的值(记录)、查看指定表中指定字段的所有记录
- B/S之SQL注入
- HashMap和HashSet的区别
- 字典树典型应用(1247)
- 多数据显示之强大的RecycleView 使用完全解析(初级基础篇)
- lightoj 1421 - Wavio Sequence LIS变形
- Max Factor (hdu_2710) 素数筛选
- Linux源码环境下编译apk实践