memcpy问题(内部结构)

时间:2013-11-28 09:21:58

标签: c memcpy

我有2个结构。

typedef struct A {
  INT Len;
  VOID *Buffer;
} A;

typedef struct B {
    INT MyVar;
    INT Length;
    CHAR Message[100];
} B;

结构A在某处填充,我想将* Buffer的内容复制到Message [100](在结构B中)。

我正在尝试这样做:

memcpy(B.Message, A.Buffer, A.Len);

我正在使用Visual C ++编译器,它说:

  

当前位置没有可用的源代码。

然后:

  

访问冲突读取位置0x00000000。

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:2)

确保您复制的A确实有效。它看起来好像是一个NULL指针。

答案 1 :(得分:1)

此段代码会回答您的问题( 经过编辑以符合您评论中的描述 ):

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

typedef struct A {
  int Len;
  void *Buffer;
} A;

typedef struct B {
    int MyVar;
    int Length;
    char Message[100];
} B;


void mycopy(A source) 
{
    printf("Content: %s\n", (char*)source.Buffer);
    B test;
    memcpy(test.Message, source.Buffer, strlen(source.Buffer)*sizeof(char));
    printf("Message is: \"%s\"!\n", test.Message);
}


int main(void)
{
    A mymessage;
    mymessage.Buffer = malloc(40*sizeof(char));
    strcpy(mymessage.Buffer,"Hello world");
    mycopy(mymessage);
    return 0;
}

在你发布的memcpy代码中,你已经使用了结构的定义(BA),尽管你必须创建一个结构的实例变量来开始。

你应该在memcpy之前发布你所做的事情,因为根据你所写的,我们假设你没有实现这两个结构,就像我在这里所做的那样:

A mymessage;
B test;