Tag: 动态内存分配

C / C ++:解除分配或删除动态创建的内存块

可能重复: C ++ delete – 它会删除我的对象,但我仍然可以访问数据? 我试图在C / C ++中释放一块动态创建的内存。 但是我使用的标准方法(malloc / free和new / delete)似乎都是function失调的。 下面给出的两个代码的o / p是相似的。 这是使用malloc / free的代码: #include #include int main(){ int * arr; arr = (int *)malloc(10*sizeof(int)); // allocating memory int i; for(i=0;i<10;i++) arr[i] = i; for(i=0;i<10;i++) printf("%d ",arr[i]); printf("\n"); free(arr); // deallocating for(i=0;i<10;i++) printf("%d ",arr[i]); printf("\n"); } 这是使用new / […]

在C中动态设置数组访问模式

我想在C(99)中做这样的事情: int n = compute_size_of_matrices(); int T = compute_number_of_matrices(); float matrices[][n][n] = malloc( sizeof(float) * n*n* T ); //[sic!] 观察第一维中缺少的大小。 我想动态设置维度的大小,以便执行以下操作 /* Load each matrix with the unit matrix */ for( int t = 0; t < T; t++ ) for( int i = 0; i < n; i++ ) for( int j = 0; […]

malloc()和calloc()之间的区别?

任何人都可以解释在C中使用malloc()和calloc()进行动态内存分配有什么区别?

‘c’问题中的动态内存分配

我正在使用malloc编写代码然后面临一个问题所以我写了一个测试代码,它实际上总结了下面的整个混乱:: # include # include # include int main() { int *p = NULL; void *t = NULL; unsigned short *d = NULL; t = malloc(2); if(t == NULL) perror(“\n ERROR:”); printf(“\nSHORT:%d\n”,sizeof(short)); d =t; (*d) = 65536; p = t; *p = 65536; printf(“\nP:%p: D:%p:\n”,p,d); printf(“\nVAL_P:%d ## VAL_D:%d\n”,(*p),(*d)); return 0; } Output:: abhi@ubuntu:~/Desktop/ad/A1/CC$ ./test SHORT:2 […]

如何将内存分配给int(* a)?

如何将内存分配给整数类型(* a)[2]? 我很乐意用** a,* a等等,也* a [2],但这看起来不同。 有人可以帮忙吗? 提前致谢。

如何在C中声明可变大小的2D数组?

我的项目有问题。 我必须制作一个可变大小的2D数组来存储一些预测误差。这是关于图像的。 麻烦的是我必须加载不同大小的图像,所以对于每个图像,我必须进入一个文件,相应的像素数的二维数组..我在你的问题中搜索,但它不是我在看什么for.Can有人帮助我吗? 谢谢

realloc()无效的旧大小

我正在从KandR C编程书中做一些有趣的练习。 该程序用于从用户输入的一组行中查找最长行,然后打印它。 这是我写的(部分,部分内容直接取自本书): – #include #include int MAXLINE = 10; int INCREMENT = 10; void copy(char longest[], char line[]){ int i=0; while((longest[i] = line[i]) != ‘\0′){ ++i; } } int _getline(char s[]){ int i,c; for(i=0; ((c=getchar())!=EOF && c!=’\n’); i++){ if(i == MAXLINE – 1){ s = (char*)realloc(s,MAXLINE + INCREMENT); if(s == NULL){ printf(“%s”,”Unable to […]

堆内存分配

如果我使用malloc()在我的程序中动态分配内存但是我没有在程序运行时释放内存,那么在程序终止后是否会释放动态分配的内存? 或者如果它没有被释放,并且我一遍又一遍地执行相同的程序,它每次都会分配不同的内存块吗? 如果是这样的话,我应该如何释放这段记忆? 注意:我能想到的一个答案是重新启动我正在执行程序的机器。 但是,如果我在远程计算机上执行程序并且重启不是一个选项?

我是否需要为我的作业创建三个单独的数组?

好的,首先我会解释我的任务。 对于这个分配,我必须使用动态内存分配,我没有遇到任何问题。 我遇到的问题是弄清楚正确的工作方式。 对于我的任务,我需要创建一个程序,提示用户输入他们有多少学生然后要求提供以下信息; 学生证,出生日期和电话号码。 我需要使用循环来提示用户输入所有学生信息。 我需要创建一个循环,它将扫描所有学生ID并使用他们的生日找到最老的学生(循环必须能够扫描超过3名学生)。 这是我的代码,我还没有做太多,因为我不确定从哪里开始。 我已经设置了动态内存分配,但我不知道如何处理其余部分。 请帮我。 谢谢。 #include #include int main (void) { int * studentData= NULL; int students; printf(“How many students are you entering records for:\n”); scanf(“%d”, &students); studentData=(int*)malloc((sizeof(int)*students)); }

C – 指针在释放后不为空

释放后指针的值是否变为NULL? int* p = malloc(sizeof(*p)); free(p); if(p==NULL) printf(“Null\n”); else printf(“Not null\n”); 输出: Not null 好吧,我假设没有; 无论如何,我今天早些时候提出了一个问题: 在这里查看: C – 如何释放动态分配的内存? List* head1 = NULL; insertFront(&head1, 1); insertFront(&head1, 2); print(head1); while (head1) { List *temp = head1; head1 = head1->next; free(temp); } if(head1 == NULL) printf(“Null\n”); else printf(“Not null\n”); 这种情况下的输出: Null 在这种情况下,在释放head1(节点也)后,head1变为null,不是吗? 最后,我错过了一些概念吗? head1为null,但p不是。 我的问题是: 为什么head1和p之间的值不同?