Tag: malloc

如何在一个分配C中动态分配2D数组

你能帮我弄清楚如何在一次分配呼叫中分配2Darrays吗? 我试着做: int ** arr =(int **)malloc(num * num * sizeof(int *)); 但它不起作用。 num是行和列。

Malloc语句给出分段错误11

对于一个项目我正在学习在c中使用malloc / realloc,但我无法弄清楚为什么这段代码给我一个seg错误! #include #include #include #include typedef struct word_data word_data_t; typedef struct data data_t; typedef struct index_data index_data_t; struct word_data { int docunumber; int freq; }; struct data { char *word; int total_docs; word_data_t *data; }; struct index_data { data_t *index_data_array; }; /* Inside a function called from main */ index_data_t *index_data=NULL; index_data->index_data_array = […]

function分配,主要无法使用

我正在尝试分配空间并将我的函数中的文件数据放入main中的char数组指针数组中。 运行程序时出现分段错误。 谁能告诉我为什么? 数据字[0]在函数中正确打印。 这是我的function: void database_extract (char **data_words) { FILE *f_data; f_data = fopen(“database.txt”,”r”); struct stat st; stat(“database.txt”, &st); data_words = (char **)malloc(st.st_size * sizeof(char)); if (data_words == NULL) { printf(“No room\n”); exit(EXIT_FAILURE); } data_words[0] = “test”; printf(“%s”,data_words[0]); } 这是我的主要内容: int main () { char **data_words; database_extract (data_words); printf(“%s”,data_words[0]); } 任何帮助将不胜感激。

将三重指针传递给函数然后mallocing一个二维数组

得到分段错误并且不明白为什么,必须传递三重指针才能进行分配,所以无法改变… 这是function void alloc2d(double*** a, int m, int n) { int i, j; **a = malloc(sizeof(double *) * m); a[0] = malloc(sizeof(double) * n * m); for(i = 0; i < m; i++) a[i] = (*a + n * i); } 这是函数的调用…… double** m; alloc2d(&m, 5, 10); double count = 0.0; for (int i = […]

如何在C中初始化指向指针的指针

所以我得到了这个包含2个字段的struct Node : DataP data , void * key , DataP只是void*的typedef 。 我创建了一个双指针Node **table ,使其像2D数组一样。 我无法想象如何malloc它,我希望这个双指针充当2D数组,其中2为行数,x为cols数。 我试过table = (Node**)malloc(sizeof(Node*)*2); 但这是对的吗? 我该如何从这里继续?

如何在c函数中动态malloc内存?

我想调用这样的函数: char* Seg(char* input, char **segs, int* tags) 实际上input是真正的输入, segs tags是返回,现在返回是错误消息。 我的程序是这样的: #include char* Seg(char* input, char **segs, int* tags) { // dynamic malloc the memory here int count = strlen(input); // this count is according to input for (int i = 0; i < count; i++) { segs[i] = "abc"; } for (int i […]

在单个malloc()调用中创建2D数组

#include #include #define MAX_ROWS 5 #define MAX_COLS 5 int globalvariable = 100; void CreateMatrix(int ***Matrix) { int **ptr; char *cp; int i = 0; *Matrix = (int**)malloc((sizeof(int*) * MAX_ROWS) + ((MAX_ROWS * MAX_COLS)*sizeof(int))); ptr = *Matrix; cp = (char*)((char*)*Matrix + (sizeof(int*) * MAX_ROWS)); for(i =0; i < MAX_ROWS; i++) { cp = (char*)(cp + ((sizeof(int) […]

C传递可变大小的二维数组来起作用

我正在尝试重构我的代码以使其更好/更具可读性所以我正在尝试更改2-D变量数组分配如下 // OLD CODE int **map; map = calloc(number, sizeof(int *)); if (!(map)) { free(map); return 1; } for (int i = 0; i = 0) { free(map[i]); } free(map); return 1; } } // NEW CODE int (*map)[number] = malloc(sizeof (int[number][number])); if (!(map)){ free(map); return 1; } 问题是我使用map的所有函数都采用int **map并且通过更改int **map的声明,就像我所做的那样,IDE告诉我incorrect type int[]* instead of […]

由于malloc()语法错误导致程序崩溃

struct nouedls { char * path; char * name; struct nouedls * suiv; }; typedef struct nouedls nouedls; typedef nouedls * listes; listes ajouters(listes ls, char * path , char* name) { nouedls * x=malloc(sizeof(x)); listes auxl; x->path=malloc(strlen(path)*sizeof(char)); x->name=malloc(strlen(name)*sizeof(char)); strcpy(x->path,path); strcpy(x->name,name); x->suiv=NULL; if (ls==NULL){ ls=x; } else { auxl=ls; while(auxl->suiv!=NULL) { auxl=auxl->suiv; } auxl->suiv=x; } […]

将单指针和双指针传递给c 中的函数

我试图在函数中传递单个指针和双指针 。 但它给了我错误。 int main() { int *pt; fun(pt); . . } fun(int *pt) { pt=(int*)malloc(6*sizeof(int)); . . } 我们使用双指针时的语法是什么。 任何人都可以用一个例子来描述它,或者可以编辑上面的例子。 我将非常感谢你。