【发布时间】:2014-04-30 20:27:26
【问题描述】:
每次尝试运行此函数时都会遇到分段错误。
char *hist_array[20];
int history_counter = 0;
void save_to_history(char *temp){
temp = malloc(512);/*512 is the size of temp array*/
printf("temp = %s\narray = %s",temp,hist_array[history_counter]);/*debug*/
strcpy(hist_array[history_counter],temp);
printf("Saved %s to history to %d\n\n",hist_array[history_counter],history_counter);
history_counter++;
}
我不确定我是否正确使用了malloc,但据我了解,它应该有助于将我的字符串temp 正确保存到字符串数组hist_array。此外,temp 永远不会是NULL。
编辑 1: 将 sizeof(temp) 更改为正确的大小 512,仍然得到 segfault。
【问题讨论】:
-
不,这行不通。 sizeof(temp) 是指针的大小,而不是传入的字符串。您需要将字符串大小作为参数传入。
-
您似乎还用指向新的未初始化内存块的指针覆盖了传入的指针 - 然后将其用作 strcpy 的源。
-
@OldProgrammer @Baldrick 我已将
sizeof(temp)更改为正确的值,但仍然出现段错误。 @Baldrick 所以我需要初始化数组hist_array? -
您是否在某处为
hist_array中的指针分配了内存?如果不是 - 这就是段错误的原因。
标签: c segmentation-fault malloc strcpy