结构变量成员null仅适用于一个实例

时间:2018-08-04 19:34:28

标签: c gcc

我有以下代码-

#include<stdio.h>
#include<assert.h>
#include <stdlib.h>

typedef unsigned char Byte;

typedef struct _big_num {
   int  nbytes;  // size of array
   Byte *bytes;  /// array of Bytes
} BigNum;

void initBigNum(BigNum *n, int Nbytes)
{
    n = malloc(sizeof(BigNum));
    assert(n != NULL);
    n->bytes = calloc(Nbytes, sizeof(char));
    assert(n->bytes != NULL);
    if (n -> bytes == NULL) {
        fprintf(stderr, "error\n");
    }
    n->nbytes = Nbytes;
    return;
}

int main() {

    BigNum num1;
    BigNum num2;

    initBigNum(&num1, 20);
    initBigNum(&num2, 20);

    if (num1.bytes == NULL) {
        fprintf(stderr, "num1->bytes is NULL\n");
    }

    if (num2.bytes == NULL) {
        fprintf(stderr, "num2->bytes is NULL\n");
    }

    return 0;
}

我使用gcc -std=c99 -Wall aa.c进行编译。我正在使用MacOS。

输出为num2->bytes is NULL

为什么只有num2部分显示为NULL?为什么不使用num1?我曾尝试在线搜索它,但不确定如何搜索。

对于上下文,我试图为项目设计一个小型的BigInt库。但是,当我尝试在strncpy中使用它时,第二个num2总是抛出seg错误。

我在上面最短的代码中复制了同样的东西。

0 个答案:

没有答案