gpt4 book ai didi

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

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

我有一个名为 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/

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