【发布时间】:2014-06-19 21:25:05
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
struct myStruct
{
int number;
};
void
allocateMem(struct myStruct *struct1)
{
struct1 = malloc(sizeof(struct myStruct));
struct1->number = 500;
printf("struct1->number: %d\n", struct1->number);
}
int
main(int argc, char *argv[])
{
struct myStruct *struct1 = NULL;
allocateMem(struct1);
printf("number: %d\n", struct1->number);
return 0;
}
StackOverflow 的市民您好,我寻求您的帮助。
我想做的是使用堆空间而不是堆栈空间来分配结构;我正在尝试在函数内部进行分配。无论我对此有多少麻烦,我总是会收到分段错误或几个编译器警告。
我在这里做错了,但我不知道是什么,我一直在 StackOverflow 和一般互联网上试图找到与我的问题相关的示例或帖子,但我没有找到任何东西。
如果你能告诉我我做错了什么,或者只是指出我正确的方向,我将非常感激。
感谢大家快速准确的回复。你是对的,我需要一个指向指针的指针,感谢你的帮助,我的代码现在可以工作了。
【问题讨论】:
-
你是按值传递地址,你需要传递地址的地址。阅读Need of Pointer to pointer
-
不是重复的。好吧,反正不是那个问题。
-
SO 上有数百个(可能是数千个)“为什么我对这个变量(按值传递)的更改不保留在调用函数中”线程。
标签: c struct segmentation-fault heap-memory