C语言指针开辟内存释放内存

本文详细介绍了C语言中字符串操作的实现,包括字符串赋值、比较以及内存分配与释放的基本方法。通过实例演示了如何高效地进行字符串处理。
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main(){
char *a=NULL;
char *b=NULL;
a=(char*)malloc(100);
b=(char*)malloc(100);
a="abc";
b="abc";
int result=strcmp(a,b);
printf("result is %d.\n",result);
free(a);
free(b);
}
在C语言中,创建公共内存池通常是为了提高程序效率,减少频繁的内存分配和释放操作。内存池是一种预先申请大块内存然后将其划分为小块供多个函数使用的机制。以下是创建简单公共内存池的基本步骤: 1. **初始化**:首先,你需要确定内存池的大小和内存块的大小。例如,你可以选择一次分配一个固定的大小,如1KB。 ```c typedef struct MemoryBlock { void* ptr; // 存储实际数据的指针 size_t size; } MemoryBlock; ``` 2. **内存分配**:在内存池开始时,通过`malloc()`动态分配一个大的连续区域作为内存池。 ```c MemoryBlock memory_pool = {NULL, pool_size}; memory_pool.ptr = malloc(pool_size); if (!memory_pool.ptr) { // 处理内存分配失败的情况 } ``` 3. **内存划分**:将内存池划分成多个固定大小的小块,并存储其起始地址和大小。 ```c size_t block_size = preferred_block_size; for (size_t i = 0; i < num_blocks; i++) { MemoryBlock *block = &memory_pool.blocks[i]; block->ptr = (char*) memory_pool.ptr + i * block_size; block->size = block_size; } ``` 4. **内存获取与释放**:当需要内存时,从内存池中取出一个块;释放时,直接返回给内存池而不是`free()`,以保持内存池的连续性。 ```c void* get_memory(size_t size) { for (MemoryBlock *block : memory_pool.blocks) { if (block->size >= size) { // 使用memcpy等手段处理边界情况 return block->ptr; } } return NULL; // 如果没有足够大的块,返回NULL } // 使用完后 void release_memory(void* ptr) { // 找到对应内存块并标记已分配 for (MemoryBlock *block : memory_pool.blocks) { if (block->ptr == ptr) { block->used = true; break; } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值