void*p=malloc(100*1024*1024)
时间: 2023-11-23 12:06:45 浏览: 37
void*p=malloc(100*1024*1024)是一个动态内存分配的语句,它的作用是在堆上分配100MB的内存空间,并将该空间的首地址赋值给指针变量p。需要注意的是,由于内存是有限的资源,过度分配内存可能会导致内存不足的问题,因此在使用动态内存分配时需要谨慎使用,避免出现内存泄漏等问题。
1. 动态内存分配的优缺点是什么?
2. 如何避免动态内存分配带来的内存泄漏问题?
3. C++中还有哪些常用的内存管理方式?
相关问题
void *p=malloc
void *p=malloc 指的是在C语言中使用malloc函数动态分配内存,并将返回的内存地址赋给void类型的指针变量p。
malloc函数是C语言中的一个标准库函数,其原型为void *malloc(size_t size),其作用是在堆空间中分配一块指定大小的内存,并返回指向该内存块的指针。
在该语句中,void *p是一个void指针变量,它可以指向任意类型的数据。void指针是一种通用指针类型,可以用来存储任意类型对象的地址。malloc返回的是一块分配的内存的起始地址,将该地址赋给void指针变量p,即表示p指向了这块动态分配的内存。
通常情况下,我们会根据实际所需的内存大小来替换掉size_t size,以确保分配到足够的内存空间。
需要注意的是,malloc函数分配的内存是连续的字节空间。分配的内存需要在使用完毕后手动释放,以避免内存泄漏。释放内存的方法是使用free函数,即free(p),其中p为之前malloc分配的内存地址。
void *p=malloc这个语句本身并没有完成具体的内存分配操作,它仅仅是声明了一个void指针变量p,并将后续用到的内存分配操作的结果赋值给p进行处理和管理。
WINDOWS NT 32位C ++ 程序 ,void *p=malloc(100) ,sizeof(p)是多大
在 Windows NT 32位平台上,void * 指针的大小为 4 字节(byte),即 sizeof(void *) = 4。这是因为在32位系统中,内存地址的长度为32位,即4个字节,而 void * 指针变量存储的是内存地址,因此其大小也为4字节。在你的示例中,指针变量 p 指向动态分配的 100 字节内存空间的起始地址,而 sizeof(p) 实际上是求指针变量 p 的大小,而非其指向的内存空间大小。