c语言开辟内存函数 内存 c语言
c语言程序中开辟空间
#includestdio.h
成都创新互联专注于望花网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供望花营销型网站建设,望花网站制作、望花网页设计、望花网站官网定制、微信小程序开发服务,打造望花网络公司原创品牌,更为您提供望花网站排名全网营销落地服务。
#includestdlib.h
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*LinkList;
LinkList Init()
{
LinkList L = NULL;
printf("%d ",L);
L=(LinkList)malloc(sizeof(Lnode));
printf("%d ",L);
L-next=0;
return L;
}
void main()
{
LinkList A = NULL;
printf("%d ",A);
A = Init();
}
用c语言怎样无限开辟内存、或编一个通过无限开辟内存,处理大量数据的程序来让电脑死机。
生成大链表,最好里面用大节点,这样可以加速内存的耗尽,分配时用calloc申请内存,malloc也可以,生成中的节点中多用指针,然后指针不指空值(这样就有可能指到系统区去),这里的用三个do{}while(1)来实现,一个是生成链表,一个是用链表节点值做任意的运算——这两个是同一等级的,还有一个是最外层。这里一定是要用到break的……思路是这样的,你也是这样想的吧,想必我说的就是你想的,只是你在编译是总是不得过,对啊,呵呵,别傻啦,我们能找到的编译器是要做安全性检查的(不光是一些语法的)
除非,你在写之前,自己先写一个编译器来……或者你已经找到了这样的工具
c语言 在一个线程上开辟一段内存;
这个不是C语言能做的,因为有“类”。
基本实现思路和@fengfei5551223 类似
提出一些不同的实现细节:
1、申请空间为了做到最大化兼容,使用void指针;size是具体的数值
void * buf=NULL;
void create_memory(){
buf=(void *) malloc(size);//
}
2、你的要求是开辟内存,写内存,读内存,那么应该是操作的同一块内存区域,
因此传参数不能总是调用create_memory方法,否则每次总是新申请内存,
没有达到共用的目的
class A{
char *buf=NULL
public:
//增加一个获取开辟空间地址函数
void *get_buf(){
return buf;
}
};
int main(){
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、对开辟出的内存区域没有最终销毁这个是很危险的,
当然我不清楚你的需求,但是大多数场景下还有最后一步是做destory;
而且要用到同步互斥变量,所以最后需要报这些变量销毁;
这样使得程序更具有健壮性。
c语言开辟内存的问题
①C语言编码的时候不会开辟内存,只有在编译之后才会生成可执行程序,在可执行程序里面给出内存的开辟方法。
②真正内存的开辟是在程序运行的时候。程序装载到内存里面,开始运行才会真正开辟内存。
③C语言程序装载到内存中之后,其在内存中的进程空间中有代码区、全局数据区、堆区和栈区。代码区存放代码编译后的执行指令;全局数据区存放全局变量和静态变量;栈区存放函数内部的局部变量和返回地址,这部分内存是在函数调用时才申请的;堆区是自由申请内存的区域。需要使用malloc等自己分配内存,这部分内存需要自己释放。
④向int i;这样的句子,在C语言中,既是声明又是定义,所以这样的语句其实已经分配了内存,而不是等到赋值的时候。
⑤有不懂的可以追问。
网站名称:c语言开辟内存函数 内存 c语言
文章地址:http://azwzsj.com/article/doiisjh.html