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://ybzwz.com/article/doiisjh.html