gpt4 book ai didi

c - 尝试在指向结构的指针内分配数组时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:36:29 25 4
gpt4 key购买 nike

我正在尝试为结构中的数组分配内存,如下所示:

    typedef struct
{
int a;
int *b;
} MyStruct;

我有一个像这样初始化结构的函数:

    void init( MyStruct * myStruct, int size )
{
myStruct = malloc( sizeof( MyStruct ) );
myStruct->a = size;
myStruct->b = malloc( size * sizeof( int ) );
}

但是当我尝试为数组 b 内的字段分配内存时,出现段错误错误

    int main( void )
{
int i, size = 5;
MyStruct *myStruct;
init( myStruct, size );

for( i = 0; i < size; i++ )
{
myStruct->b[i] = malloc( sizeof( int ) ); //fails here
myStruct->b[i] = i*i;
}
}

我找了好几遍,还是没能解决这个问题。有人知道为什么会这样吗?

最佳答案

在 c 中传递的参数是按值调用的,因此在 init 函数中分配的内存永远不会分配给 main< 中的 myStruct 指针变量 但仅限于传递给 init 的副本。

关于c - 尝试在指向结构的指针内分配数组时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com