社区
C语言
帖子详情
内存分配的一个问题!
nickcheng
2003-10-16 11:41:25
这样定义了一个结构
struct aa
{
char *ss;
}bb;
象下面这么调用总有错!
bb.ss[0]='a';
但是如果为ss分配内存空间后就可以!
但是如果这样定义
char *str;
再这样使用
str[0]='a';
就没有问题
这是为什么?
...全文
44
8
打赏
收藏
内存分配的一个问题!
这样定义了一个结构 struct aa { char *ss; }bb; 象下面这么调用总有错! bb.ss[0]='a'; 但是如果为ss分配内存空间后就可以! 但是如果这样定义 char *str; 再这样使用 str[0]='a'; 就没有问题 这是为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
playboyxp
2003-10-16
打赏
举报
回复
你的指针还没分配内存,不能这么用
darcymei
2003-10-16
打赏
举报
回复
bb.ss="aaa"
No problem!ss会指向系统为你分配一段const字符串的首地址
bb.ss[0]='a'
Big problem!对未知内存进行赋值操作。
tonybaobao
2003-10-16
打赏
举报
回复
都是有问题的。你要记住,凡是定义指针后,一定要对其分配内存空间,否则指针不知道指向何处,因此你用str[0]所指向的内容就未知,如果对其进行赋值岂不是很危险?
Hot_Forever
2003-10-16
打赏
举报
回复
不过按照你的赋值方法的话,2种情况下都是有问题的
Hot_Forever
2003-10-16
打赏
举报
回复
当你用下面那种形式的时候,str="aaaaaaa",编译器会自动的为str分配内存,而在结构体中间的话,编译器不会自动给str分配内存,所以出错
likangnian0128
2003-10-16
打赏
举报
回复
char *str;
str[0]='a';
ft,这个绝对是有问题的。
liao2001
2003-10-16
打赏
举报
回复
都有问题,没有问题是因为你很走运,你可以去摸奖了!
roselu
2003-10-16
打赏
举报
回复
学习!
内存
分配
方式与
内存
分配
算法
内存
分配
方式有两种,连续
内存
分配
方式和离散
内存
分配
方式。不同的
分配
方式又有不同的
分配
算法。
内存
分配
算法,其实就是:有一大块空闲的资源,如何合理地
分配
资源?
内存
分配
的思想可以用到很多其他的领域。比如Java虚拟机是如何将
内存
分配
与回收的?再比如文件系统是如何将磁盘块
分配
与回收的?其本质就是如何把空闲的资源
分配
出去,
分配
之后又如何回收?目标就是
分配
快,回收也快,而且还不浪费。那么,就需要根据资源的...
C语言中
内存
分配
在任何程序设计环境及语言中,
内存
管理都十分重要。在目前的计算机系统或嵌入式系统中,
内存
资源仍然是有限的。因此在程序设计中,有效地管理
内存
资源是程序员首先考虑的
问题
。 第1节主要介绍
内存
管理基本概念,重点介绍C程序中
内存
的
分配
,以及C语言编译后的可执行程序的存储结构和运行结构,同时还介绍了堆空间和栈空间的用途及区别。 第2节主要介绍C语言中
内存
分配
及释放函数、函数的功能,以及如何调用这些函数申请
操作系统-- 连续
内存
分配
、非连续
内存
分配
文章目录一、连续
内存
分配
1、
内存
碎片的
问题
(1)外部碎片(2)内部碎片2、连续
内存
分配
算法(1)首次适配(2)最优适配(3)最差适配3、碎片整理方法4、连续
内存
分配
的缺点二、非连续
内存
分配
1、非连续
分配
的优点2、分段(1)程序访问物理地址需要:(2)两种存储方式:(3)分段机制访问
内存
流程图3、分页(1)程序访问物理地址需要:(2)和分段的区别:(3)逻辑地址和物理地址划分的单位(4)分页机制访问...
静态
内存
分配
与动态
内存
分配
静态
内存
分配
与动态
内存
分配
动机 平时看c/c++的书籍时,总会看到一种观点,说是C/C++语言使用的时候动态
内存
分配
是最重要的,使用malloc等函数
分配
的
内存
必须要释放,否则及其容易出现
内存
泄露。但是自己有时候挺奇怪的,啥时候的
内存
要自己释放,啥时候的
内存
是编译器释放呢?
内存
模型 这是csapp上面的linux进程
内存
分布图,从图中最下面往上看,只读段和读写段,在代码编译结束的时候就已经固...
Linux
内存
分配
/
内存
管理 相关接口
一个进程可以通过增加堆的尺寸来
分配
内存
。堆是一个用来存放动态
分配
的变量的空间,它位于未初始化数据段(bss)之后,它的顶叫做 `program break` ,这个地方会根据
内存
的
分配
和释放而变化。一般来讲C语言堆
内存
的
分配
一般会使用 `malloc()` ,它是基于 `brk()和sbrk()` 所实现的。
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章