相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

在函数C中分配内存2d数组

如何在函数中为2d数组分配动态内存?我试过这种方式:

int main()
{
  int m=4,n=3;
  int** arr;
  allocate_mem(&arr,n,m);
}


void allocate_mem(int*** arr,int n, int m)
{
  *arr=(int**)malloc(n*sizeof(int*));
  for(int i=0;i<n;i++)
    *arr[i]=(int*)malloc(m*sizeof(int));
} 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

c arrays 2d allocation function

14
推荐指数
1
解决办法
5万
查看次数

需要指针指针

存储指针地址需要什么?

  int a = 2;
  int *p = &a;
  int **q = &p;
Run Code Online (Sandbox Code Playgroud)

有实际用途吗?实时应用程序.

c pointers

9
推荐指数
2
解决办法
1887
查看次数

在C中将内存分配给char***

所以,我在为char ***类型变量分配内存时遇到了麻烦.我的目标是创建一个字符串矩阵,我目前用于内存分配的代码如下:

char ***matrix;

matrix = calloc(n*MAX_STR, sizeof(char**));
for(z = 0; z < n; z++) {
    matrix[z] = calloc(n, sizeof(char*));
    for(i = 0; i < MAX_STR; i++) {
        matrix[z][i] = calloc(MAX_STR, sizeof(char));
    }
}
Run Code Online (Sandbox Code Playgroud)

我已成功为字符串数组分配内存,使用:

char **list;
list = calloc(n, sizeof(char *));
for (j = 0; j < n; j++){
list[j] = calloc(MAX_STR, sizeof(char));
}
Run Code Online (Sandbox Code Playgroud)

但我现在遇到矩阵问题.

在Valgrind上使用--leak-check = full运行程序会给我以下消息:

==5126== Invalid write of size 8
==5126==    at 0x400B9F: createmat (proj.c:100)
==5126==    by 0x401598: main (proj.c:237)
==5126==  Address 0x5210878 …
Run Code Online (Sandbox Code Playgroud)

c memory string memory-management matrix

3
推荐指数
2
解决办法
4024
查看次数