汕尾市企业网站seo点击软件,影视公司网站建设,惠州seo外包v1,企业网盘怎么下载文件C语言之字符串存储差异分析 字符串字符串字面量字符数组动态分配字符串 结语 字符串
在C语言中#xff0c;可以使用多种方式来创建字符串。但是#xff0c;不同创建方式之间的区别#xff0c;你了解么#xff1f;。
字符串字面量
C语言 -- 字符串字面量创建方式
char *s… C语言之字符串存储差异分析 字符串字符串字面量字符数组动态分配字符串 结语 字符串
在C语言中可以使用多种方式来创建字符串。但是不同创建方式之间的区别你了解么。
字符串字面量
C语言 -- 字符串字面量创建方式
char *str Hello world!上述代码块中是大家常用的一种创建方式但是这种方式背后的原理主要有以下几点
数据会直接存储到只读内存区常量区。无法进行下标修改。
字符数组
C语言 -- 字符串字符数组创建方式char str[10] Hello world!底层原理
这个字符串会转换为字符数组。 eg: char str[10] Hello; 会转化为 [H, e, l, l, o, \0]。 使用’\0’作为字符串的结尾标识。因为是使用字符数组存储因此支持通过下标进行数据的修改。
动态分配字符串
char *dyn_str malloc(10 * sizeof(char));
if (dyn_str ! NULL) { strcpy(dyn_str, Hello); dyn_str[0] h; // 这是正确的因为dyn_str指向的是动态分配的内存
}free dyn_str底层原理
分配技术会使用MMAP进行内存分配若mmap分配失败没有足够的内存则会返回Null。初始化mmap只是进行了内存分配但是这个引用区域中可能存储着历史数据因此使用的时候要进行内存初始化防止数据之间互相影响。释放回收对于mmap分配的内存当使用完成的时候需要通过free回收内存否则不断使用会导致内存泄露。
结语
当使用一个技术的时候需要了解它的不同使用方式之间的差异以及背后的实现细节只有这样使用起来才不会忐忑不安。