如何解决动态分配对象时,结构中不是ptrs不是动态分配的成员会在堆栈中而不是堆中吗?
说我有这个结构:
typedef struct List_object list;
struct List_object {
char* name;
struct stat stats;
};
主要:
list** listObjects = malloc(sizeof(list*) * n);
for(int i = 0; i < n; i++) {
listObjects[i] = malloc(sizeof(list));
listObjects[i]->name = malloc(sizeof(char) * 124);
}
然后我有一个设置它们的函数:
void setListObjects(char* name,struct stat stats);
我想知道数组 listObjects 中每个对象中的数据成员 struct stat stats 是否也会在堆中?
否则将仅是 listObjects 及其数据成员名称,因为两者均分配了 malloc ,而不是统计信息?
解决方法
我想知道数组listObjects的每个对象中的数据成员struct stat stats是否也将在堆中?
是的。每个结构成员将分配在堆上。尽管请注意,虽然示例中的指针name
本身将与堆上的结构一起分配,但它指向的对象可以是任何东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。