社区
C语言
帖子详情
请问关于指针内存分配问题?
DJoe-3
2016-04-19 09:58:38
我有一个结构体
typedef struct _struct_{
context* ctx;
connection* cn;
char* type;
} mystruct
mystruct* ms = malloc(sizeof(mystruct));
这里的ctx,cn都是结构体指针,此时用malloc或者初始化么?
如果没有初始化,会产生哪些问题?
谢谢!
...全文
184
10
打赏
收藏
请问关于指针内存分配问题?
我有一个结构体 typedef struct _struct_{ context* ctx; connection* cn; char* type; } mystruct mystruct* ms = malloc(sizeof(mystruct)); 这里的ctx,cn都是结构体指针,此时用malloc或者初始化么? 如果没有初始化,会产生哪些问题? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
自信男孩
2016-04-26
打赏
举报
回复
给结构体malloc只能是申请了12个字节(32位系统),三个结构提元素都是指针(3×4)那么这三个都是野指针,即若不进行初始化或申请空间(malloc)很有可能会出现内存错误;建议在使用时初始化或为其分配空间;
功夫熊猫-阿宝
2016-04-24
打赏
举报
回复
有点复杂,倒没用过,内还有指针的,学习学习
一根烂笔头
2016-04-20
打赏
举报
回复
一段没有使用的空间,malloc出来是全0,如果使用过的空间,那么其中可能保留有旧值,这些值对于用户来说是随机数据,会构成潜在的程序bug,C中指针避免操作NULL和野指针
赵4老师
2016-04-20
打赏
举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
小灸舞
版主
2016-04-20
打赏
举报
回复
mystruct* ms = malloc(sizeof(mystruct)); 此时结构体内的3个指针都是野指针,指着一个未知的区域 如果尝试访问这3个指针所指的区域或者尝试写入那么就会产生异常
Zarten
2016-04-20
打赏
举报
回复
都是野指针,
星光伴月
2016-04-20
打赏
举报
回复
malloc申请到的内存,不会自动清零,很可能是一些垃圾数据。申请成功后应该给它们赋初值,如果不加处理而直接使用,那么里面的指针是野指针,数据是垃圾数据。 如果仅仅是为了将申请到地内存全部清零的话,也可以使用另一个申请内存的函数:calloc,它的原型如下: void * calloc(size_t n,size_t size); 这个函数会自动将申请到的内存清零,相信应该比我们先用malloc再用memset效率更好一些。
paschen
2016-04-20
打赏
举报
回复
在解引这个指针之前,你肯定要malloc或者让这个指针去指向一个已有的对象 否则是个野指针,解引可能导致程序崩溃
CalvinRyan
2016-04-19
打赏
举报
回复
不初始化或者不分配内存是允许的,但是一旦操作到结构体指针的时候一定要分配内存或指向操作,否则操作野指针结局等同于 int main(void) { char *p; *p='a'; return 0; } https://www.zhihu.com/question/35470332
renwotao2009
2016-04-19
打赏
举报
回复
malloc后,memset为0
C++ 11 14 17 20内存管理-
指针
、智能
指针
和内存池
课程简介 C++ 11 14 17 20内存管理-
指针
、智能
指针
和内存池从基础到实战 学习计划 1. 每天学习一小时以上 2. 跟着视频动手编写代码 3. 调试代码并对比课程多提供的源码 课程目标 1. 理解
指针
...
C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体
指针
内存分配
问题
?
C\C++中结构体变量与结构体
指针
内存分配
问题
?
问题
1:结构体
指针
最开始怎么分配内存?用sizeof()是不能确定大小的。
问题
2:给结构体变量分配之后,是否还要给每个成员分配,还是只给不能确定大小的成员分配? ...
c语言字符
指针
分配内存,关于
指针
内存分配
问题
该楼层疑似违规已被系统折叠隐藏此楼查看此楼程序的可用内存有三种:静态存储区、栈存储区、堆存储区。静态存储区是全部变量和static变量占据...每个变量都要有它的
内存分配
,如:static int global_var;即是在静态...
结构体
指针
的内存空间分配
问题
(C语言)
结构体
指针
的内存空间分配
问题
(C语言) 提示:文章结尾有两个代码的合并的...所给代码的含义是:创建一个结构体
指针
,通过自定义函数对该结构体
指针
进行初始化(包括
内存分配
和数据的初始化),主要解决的是结构体
指针
内存分配
1、一维
指针
内存分配
。//作数组使用时 int *p = NULL; //保存int类型数据 int n = 7; //数组长度 p = (int *)malloc(sizeof(int)*n); int i; for(i=0; i; i++) p[i] = 0; free(p); //释放2、
指针
数组
内存分配
int n ...
C语言
69,372
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章