malloc(sizeof(0))返回的是否是有效的指针,为什么?
发布网友
发布时间:2024-05-07 19:25
我来回答
共2个回答
热心网友
时间:2024-05-10 17:25
是有效的指针,因为sizeof(0) 应该返回一个int所占空间的大小的指针,#include<iostream>
using namespace std;
void main()
{
int* t = (int*)malloc(sizeof(0));
*t = 0;
free(t);
}试试看
热心网友
时间:2024-05-10 17:25
是有效指针,0是一个int类型的常量,所以sizeof(0)相当于sizeof(int),所以整个表达式相当于:
malloc(sizeof(int));
将分配一个int类型长度的空间,反回该空间的地址。
malloc(sizeof(0))返回的是否是有效的指针,为什么?
是有效的指针,因为sizeof(0) 应该返回一个int所占空间的大小的指针,#include<iostream> using namespace std;void main(){ int* t = (int*)malloc(sizeof(0));t = 0;free(t);}试试看
c语言中malloc是什么?怎么用?
如果 size 的值为 0,那么返回值会因标准库实现的不同而不同,可能是 NULL,也可能不是,但返回的指针不应该再次被引用。注意:函数的返回值类型是 void *,void 并不是说没有返回值或者返回空指针,而是返回的指针类型未知。所以在使用 malloc() 时通常需要进行强制类型转换,将 void 指针转换成我...
C语言 malloc
malloc(int size);说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void 类型。void 表示未确定类型的指针。C,C++规定,void 类型可以强制转换为任何其它类型的指针。从函数声明上可以看出。malloc 和 new 至少有两个不同:new 返回指定类型的指针,并且可以自动计算所需要大小。比如:in...
有关sizeof 和 malloc 的问题
1. malloc需要一个正整数作为参数,当然可以用sizeof计算,但与new int[]不一样,malloc返回的是void*,new int[n]申请的空间是4*n个字节,返回int 2.(int *)malloc(100) 确实就是内存100个字节的意思 3.sizeof(3)等于4是因为3是int型,与具体数值无关。
malloc是什么意思?
malloc是在C语言中是一个申请内存单元的函数。函数原型:void *malloc(unsigned size);功 能:分配size个字节的内存空间 返 回 值:成功,返回分配的内存单元的起始地址;否则返回0 举例说明如下:// 下面的定义方法是正确的int *a=(int *)malloc(n*sizeof(int)); // 定义指针,并分配内...
malloc怎么用呢
//并将首地址存储到指针变量pd中 第一、malloc 函数返回的是 void * 类型。对于C++,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。所以必须通过 (int *) 来将强制转换。而对于C,没有这个要求,但为了使C程序更方便的移植到...
new和malloc的区别深入解析
parr = new int [100]; //返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int) * 100;2) 而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。int* p;p = (int *) malloc (sizeof(int)*128);//分配128个(可根据实际需要替换该数值)整型存储单元,并...
c语言malloc函数
malloc分配空间,是指系统按照的你程序在内存堆栈中分配一段内存给你,而该内存段的首地址赋值给你的p,这是基本的指针概念,为什么要强调这个?请继续看这过程,malloc对p做的操作仅仅是个赋值而已,除此之外malloc和p没有任何关系,都是独立的,真实的情况,不是说malloc给p分配空间,你这个说法是错误...
C语言问题
而 malloc 则必须由我们计算要字节数,并且在返回后强行转换为实际类型的指针。int* p;p = (int *) malloc (sizeof(int));第一、malloc 函数返回的是 void * 类型,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。所以必须...
c++中malloc和alloc函数的声明和调用格式以及其功能
那麽这些元素将保证会被初始化为0;如果你是为指针类型的元素分配内存,那麽这些元素通常会被初始化为空指针;如果你为实型数据分配内存,则这些元素会被初始化为浮点型的零。另外,calloc返回的是一组对象的数组,而malloc返回的是一个对象。使用calloc表明是要使用一个数组。