c语言malloc无法分配内存
我定义了一个结构体指针,想用malloc来动态的建一个数组,但是该语句执行完后,通过sizeof来查看该指针的大小只为4,我用其他的基本数据类型也试过,但结果都是4,无法...
我定义了一个结构体指针,想用malloc来动态的建一个数组,但是该语句执行完后,通过sizeof来查看该指针的大小只为4,我用其他的基本数据类型也试过,但结果都是4,无法得到想要的内存大小,是怎么回事?是头文件出问题还是编译器出问题了
展开
3个回答
展开全部
动态分配的内存是不可以通过sizeof来确定大小的。或者说 所有的指针类型都不可以。
sizeof的结果是指针本身的大小,对于32为编译器,都是4
只要你malloc的返回结果不是NULL,这个内存就可以放心的用了。
sizeof的结果是指针本身的大小,对于32为编译器,都是4
只要你malloc的返回结果不是NULL,这个内存就可以放心的用了。
追问
我想动态的定义一个数组,先定义一个指针变量,在申请相应的内存,但是在操作时却无法像数组一样正常使用,请问如何可以做到动态的定义数组?char型的数组可以这样使用,但是其他类型的就无法使用了
追答
比如
int *p, i;
p = (int *)malloc(sizeof(int) * 100);
for(i = 0; i < 100; i ++)
p[i] = i;
类似这样就Ok了
你定义的大小不对吧 注意要sizeof(类型)*元素个数。
展开全部
如果你用指针来申请内存空间,malloc(p),指针的类型要定义成结构数组的类型,
比如:struct stu *p;
ptr = malloc(p);
如果你直接申请空间,malloc(100),malloc需要强制转换成你的结构类型。
比如:ptr = (struct stu *)malloc(100);
这样才能正常申请到空间。
比如:struct stu *p;
ptr = malloc(p);
如果你直接申请空间,malloc(100),malloc需要强制转换成你的结构类型。
比如:ptr = (struct stu *)malloc(100);
这样才能正常申请到空间。
追问
请问如果我需要动态的定义一个数组,怎么可以通过这种方式实现,同时又能求出它的数组大小,我的机子通过sizeof(指针)/sizeof(类型)无法求出数组的大小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-07-01
展开全部
.......指针在32位下就是4字节。你还不知道指针是什么。基础很差!
其实你是想看看到底有没有分配够这么多内存给你。其实只要判断指针 指针 != NULL 就可以了。因为只要分配成功就肯定一样大。分配失败时返回 NULL
其实你是想看看到底有没有分配够这么多内存给你。其实只要判断指针 指针 != NULL 就可以了。因为只要分配成功就肯定一样大。分配失败时返回 NULL
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询