C strcpy =未处理的异常:访问冲突写入位置0x00000000

时间:2012-12-08 15:31:28

标签: c strcpy

我有strcpy函数的问题。使用C. 这个简单代码(下面)的要点是将字符串从数组复制到指针数组。

char string[20] = "ABCDEFGH\0";
char * array_of_pointers[20];

// now I want to copy string to the first available slot;

strcpy(array_of_pointers[0],string);

然后strcpy引发了我的错误:

Unhandled exception: Access violation writing location 0x00000000.

为什么呢?我知道这个问题可能很简单,但我真的没有线索。

2 个答案:

答案 0 :(得分:5)

目标缓冲区尚未初始化。 array_of_pointers[0]只是一个指针(在这种情况下基于访问冲突的错误信息)指向地址0.您需要初始化它。可能:

array_of_pointers[0] = malloc( strlen( string ) + 1 );

array_of_pointers是一个包含20个指针的数组。这样定义,必须初始化该数组中的每个条目才能使用它。还要记住,如果您使用malloc(或可能strdup)来分配内存,请使用free释放内存。

答案 1 :(得分:1)

您需要初始化array_of_pointers:

array_of_pointers[0] = malloc(strlen(string)+1);

或者最好:

array_of_pointers[0] = strdup(string);
相关问题