c - memcpy 使用本地指针指向全局数据

标签 c pointers data-structures global-variables

我有一个名为 xbar 的全局结构。我调用了其中的 3 个,然后将一个局部指针传递给一个函数,在该函数中它被分配给全局函数内的一个短数组。但是,当我尝试使用 memcpy 复制指向的数据时,出现“异常”错误。

typedef struct s_xbar
{
    short close[390][9000];
} xbar;
xbar *Xbar;

void assignPtr(short *qdata)
{
    qdata = Xbar[0].close[0];
}

void mycode( void )
{
    Xbar      =  (xbar  *)  calloc( 3,  sizeof(xbar));  

    short *qdata = NULL;
    assignPtr(qdata);

    short dataBarToFill[500];
    memcpy(dataBarToFill, qdata, 90 *  sizeof(short));
}

最佳答案

那是因为在assignPtr()你只分配了 Xbar[0].close[0]指向指针 qdata本地副本 .在assignPtr()之后返回,qdatamycode()仍然是 NULL。 您应该像下面这样传入指针到指针:

void assignPtr(short **qdata)
{
    *qdata = Xbar[0].close[0];
}

void mycode( void )
{
    Xbar      =  (xbar  *)  calloc( 3,  sizeof(xbar));  

    short *qdata = NULL;
    assignPtr(&qdata);

    short dataBarToFill[500];
    memcpy(dataBarToFill, qdata, 90 *  sizeof(short));
}

关于c - memcpy 使用本地指针指向全局数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737810/

相关文章:

java - 具有多个 boolean 值的 AtomicMarkableReference

android - CNC 铣刀 Material 表示

c++ - 关于 C++ 中名称修饰的问题

c - PThread基本程序,好奇这段代码有什么问题

c++ - Caffe源码中层函数头中指针运算符的含义

c - 存储在数组中的自由结构

c - 设计 O(n) 遍历的哈希表,其中 n 是元素数量

c - PIC16F628计数器坏了?

c - 动态数组类不会打印

c# - 链表的应用 C++ vs C#