双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

请教关于结构体,关于内存的疑问!

darksworld darksworld 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以一个简单的例子说明:问题见注释行。 感谢!!!!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ab
{
int *a1;
int cnt1;
};
ab AB;
ab plus(int *a,int cnt)
{

int *b = (int*)malloc(sizeof(int)*3);
for(int i=0;i<3;i++)
{
b[i] = a[i];
}
cnt++;
AB.a1 = b;
AB.cnt1 = cnt;
return AB;
}
void main()
{
int cnt=0;
int *a;
a = (int*)malloc(sizeof(int)*3);
memset(a,0,sizeof(int)*3);

a[0] = 1;
a[1] = 2;
a[2] = 3;

AB = plus(a,cnt);
AB.a1=a;
free(a); //问题:在这个地方,我只是想把主函数的a 释放掉,但是调试显示struct ab中的a1变量同时被释放了 而且之后我试图对a再次分配空间然后初始化,结果发现struct ab.a1 也被初始化了
//为什么啊???我明明没有对struct里的变量操作啊???

for(int i=0;i<3;i++)
{
printf("%d",AB.a1[i]);
}
printf("%d",AB.cnt1);
// printf("")
}
...全文

相关推荐

动态分配结构体内存(malloc)

该资源是关于C语言编程中动态分配结构体内存的示例,用于创建一个汽车销售系统的搜索界面数据库。程序通过`malloc`函数为`struct carinfo`结构体分配内存,存储汽车的相关信息,包括排量

weixin_38740848

结构体内存对其计算结构体大小

内存对齐确保了数据在内存中的存储方式能够有效地被处理器访问,提高性能并避免潜在的错误。本文将深入探讨结构体内的内存对齐规则及其计算结构体大小的方法。

明天也要加油鸭

C语言结构体占用内存深入讲解

"C语言结构体占用内存的计算与内存对齐原理"在C语言中,结构体用于组合不同类型的数据,其占用的内存大小并不总是成员大小的简单相加。这主要是由于内存对齐的规则,它是一种为了提高数据访问效率而采取的策

weixin_38741540

结构体所占内存空间的计算

结构体所占内存空间的计算计算结构体在内存中的分布是指计算结构体类型所占内存大小的过程。该过程是了解结构体在内存中的存储规则的基础。这其中最重要的概念是结构体在内存中的对齐规则。

wwp5616793

sizeof求struct结构体内存大小的问题

在C语言中,`sizeof`运算符用于计算数据类型或者变量在内存中占用的字节数。当应用于`struct`结构体时,它会返回整个结构体占据的总字节数,这涉及到内存对齐的问题。

wufangna
评论 5
收藏 已收藏
分享
返回顶部
darksworld
C语言 70,039 成员 243,237 内容