在使用malloc()申请内存后,最好在随后使用memset()函数进行初始化。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* 功能:把字符串a中不重复的数字提取出来保存到字符串b中
*/
int main(void)
{
int i,j, len;
char *a="1221256";
char *b;
len = 1;
b = (char *)malloc(sizeof(char)*len);
memset(b,0,len+1);
//memset(b, NULL, sizeof(char)*len);
//strcpy(b,&a[0]);
b[0] = a[0];
for(i = 1; i < strlen(a); i++)
{
int flag = 0;
for(j = 0; j < len; j++)
{
if(a[i] == b[j])
{
flag = 0; break;
}else
{
flag = 1;
}
}
if (flag == 1)
{
b = (char *)realloc(b,len+1);
b[len] = a[i];
len++;
}
}
for(i = 0;i < len;i++)
printf("%c", b[i]);
printf("\n");
printf("\n%s\n", b);
free(b);
return 0;
}
分享到:
相关推荐
个人总结各类博客和资料里关于malloc,calloc,realloc的对比
Malloc 返回一块内存地址的指针,否则会返回空指针null,这里要注意的是,当内存不再使用的时候,用free()函数进行对内存的释放。 2.calloc 作 用:calloc()函数有两个参数,分别为元素的数目和每个元素...
在C语言中,内存管理是程序员需要关注的重要部分,其中malloc、realloc和calloc是三个常用的动态内存分配函数。...正确使用malloc、calloc和realloc,以及了解它们潜在的风险和优化方法,是每个C程序员必备的知识。
跟踪对 malloc、realloc 和 free 的调用 用法 可以像这样使用LD_PRELOAD加载共享对象 LD_PRELOAD=heap_trace.so ./executable 例子 heaptrace 将输出有关 malloc、realloc 和 free 调用的信息 父函数的地址或已解析...
在编程中,动态内存分配是程序在运行时根据需要向操作系统申请内存的一种机制。malloc函数是C语言中用于...了解和正确使用malloc、calloc、realloc和free等动态内存管理函数是成为一名合格的C程序员的关键技能之一。
- **`realloc`**:可以用来改变之前通过 `malloc` 或 `calloc` 分配的内存块大小。这在需要扩展或缩小数组大小时非常有用。 - **`free`**:用来释放由 `malloc` 系列函数分配的内存。 #### 5. 示例代码 下面是一个...
使用动态内存很明显的好处是:不需要预先分配存储空间且分配的空间可以根据程序的需要扩大或缩小,这样可以有效的使用内存空间。 malloc和free C函数库中的malloc和free分别用于执行动态内存分配和释放。这...
4. **避免空指针解引用**:在使用`malloc`或`realloc`返回的指针之前,必须检查是否为`NULL`,以防止未成功分配内存时的空指针解引用错误。 5. **合理预测内存需求**:尽量准确地预测内存需求,避免频繁调用`...
动态内存分配主要包括三个主要函数:`malloc()`, `calloc()`, 和 `realloc()`,以及一个释放内存的函数`free()`。这些函数都是C标准库中的核心部分,它们提供了在程序运行过程中动态调整内存的能力。 1. `malloc...
我使用系统mmap实现的libc malloc,realloc和free函数 特征 大小分段:将请求分为SMALL,MEDIUM和LARGE,对SMALL和MEDIUM请求使用预分配的区域 释放碎片空间以优化重用 Hexdump分配的内存功能 实现的功能: malloc-...
在项目中使用自定义的malloc实现,如压缩包中的代码,通常是因为标准库的malloc无法满足特定需求,例如在嵌入式系统或实时系统中,可能需要更高效的内存分配策略以优化性能和稳定性。这类自定义实现往往需要考虑线程...
在用户层,我们通常通过`malloc`、`calloc`、`realloc`和`free`等函数来操作内存。`malloc`是其中最基础的一个,它接收一个整数参数,表示需要分配的字节数,并返回一个指向新分配内存的指针。如果分配失败,`malloc...
当使用free释放内存时,程序员必须确保传入的ptr是之前通过malloc、calloc或realloc函数获得的指针。如果ptr为NULL,调用free函数不会有任何效果。释放内存的一个典型操作如下: ```c free(pc); ``` 这行代码将...
stdlib.h 头文件提供了许多有用的函数,包括 malloc、free、realloc 等内存管理函数。 函数原型 malloc 函数的原型是 `void *malloc (size_t size)`,其中 `size` 是要分配的内存字节数。返回值是一个指向分配内存的...
当程序运行时,可以使用malloc动态地向堆申请内存,这样可以灵活地处理大小不确定或在编译时无法确定的数据结构。 三、malloc的工作原理 malloc通过调用操作系统的系统调用来实现内存分配。它会在内存堆中寻找一段...
c语言库文件 内存管理源代码 malloc free malloc_consolidate realloc
在深入研究`cJSON`源代码时,可以了解其内部是如何使用`malloc()`和自定义的`cJSON_malloc_`来优化内存操作的。 总的来说,`cJSON_malloc_`是`cJSON`库中关于内存管理的一个关键组成部分,它与`malloc()`紧密相关,...
这个“Malloc”项目显然旨在让学生深入理解内存分配的底层机制,并通过重新实现`malloc`、`realloc`和`free`这三个标准库函数来实践这一知识。以下是对这些关键函数的详细说明: `malloc`是C语言中用于动态内存分配...
这部分内容会讲解内存管理的基础理论,如堆和栈的区别、内存泄漏的概念,以及如何使用`malloc`、`calloc`、`realloc`和`free`等函数。 **lab实现代码及解析**是实际操作部分,学生可能需要编写或修改代码来实现一个...