当前位置:首页 > 内存 > 正文

c语言开辟内存

  • 内存
  • 2024-06-08 20:38:52
  • 8063

一、C语言中定义数组的时候,如何开辟一段内存,内存里有无初值?C语言是语言中的最高级别。
你这次测试做得很好。通过你的实验你可以了解编译器是如何实现的。
二、c语言在一个线程上开辟一段内存;这不是C语言能做到的,因为有“类”。
基本实现思路与@fengfei5551223相同
提出一些不同的实现细节:
1.为了申请空间以最大化兼容性,使用void指针是一个典型值;void*buf=NULL;
voidcreate_memory(){
buf=(void*)malloc(size);//
}
2打开内存、写入内存,和读取内存,必须操作同一个内存区域。
因此,传递参数时不能总是调用create_memory方法,否则每次都会重新申请内存,
和共享内存区域无法访问。目的
classA{
char*buf=NULL
public:
//添加一个函数,获取打开位置的地址
void*get_buf(){
returnbuf;
}
};
intmain(){
A*a;
pthread_create(&a[0],NULL,a->create_memory,NULL);
if(NULL!=a->get_buf()){//确保内存打开成功
//作为参数传递给其他线程所打开的空间地址
pthread_create(&a[1],NULL,a->write_memory,a->get_buf());
pthread_create(&a[2],NULL,a->read_memory,a->get_buf());
}
。,,
}
3.最终不销毁暴露的内存区域是非常危险的。
当然我不知道你的需求,但在大多数情况下,最后一件事是第一步就是销毁;
并且需要使用synchronizedMutex变量,所以最后需要将这些变量上报销毁;
这样可以让程序更加健壮。