【发布时间】:2014-08-10 17:17:18
【问题描述】:
我的程序的内存分配部分有问题。我应该读入一个包含名称列表的文件,然后为它们分配内存并将它们存储在分配内存中。这是我目前所拥有的,但是当我运行它时,我总是遇到分段错误。
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_STRING_LEN 25
void allocate(char ***strings, int size);
int main(int argc, char* argv[]){
char **pointer;
int size = atoi(argv[1]);
allocate(&pointer, size);
}
/*Will allocate memory for an array of char
pointers and then allocate those char pointers with the size of MAX_STRING_LEN.*/
void allocate(char ***strings, int size){
**strings = malloc( sizeof (char) * MAX_STRING_LEN);
}
这目前不起作用,因为我遇到了段错误。非常感谢您提前提供的帮助。
【问题讨论】:
-
参数大小应该是多少?什么大小?
-
这是一个 10 人的列表
-
所以它有 10 个人,每个人的名字最多 MAX_STRING_LEN?
-
您正在取消引用尚未初始化的内容。首先你需要给
*strings一个值,然后然后你可以双重取消引用到**strings。 -
那是正确的茄属植物。我们必须读入的列表是 10 个人长,名字的最大长度可以是 MAX_STRING_LEN,即 25。至少我认为是对的。