Tag: malloc

Malloc标题内容

因此,在大多数实现中,malloc在分配的内存之前存储一个标头,以跟踪分配的内存大小(以便它可以执行free和recalloc)。 标题内容是什么? 我写了一个天真的代码来找到它,但它没有任何意义 int * ptr; ptr = malloc(12*sizeof(int)); printf(“Header = %d\n”,*(ptr-1)); 它回来了 Header = 57 这里发生了什么?

C编程:malloc和循环中的free

我刚开始用C语言,对malloc()和free()性能问题知之甚少。 我的问题是:如果我在一个while循环中调用malloc()后跟free() ,例如循环20次迭代,那么与在循环外调用free()相比,它会运行得更慢吗? 我实际上使用第一种方法将内存分配给缓冲区,从文件中读取可变长度字符串,执行一些字符串操作,然后在每次迭代后清除缓冲区。 如果我的方法导致很多开销,那么我想要一个更好的方法让我获得相同的结果。

在C中分配一个二维数组,其中一维固定

我想动态分配2D数组的1维(给出另一个维度)。 这有用吗: int NCOLS = 20; // nrows = user input… double *arr[NCOLS]; arr = (double *)malloc(sizeof(double)*nrows); 并释放它: free(arr)

你可以确定一个字符串是否可以在C中释放?

如果我说: #include #include #include char *x; char *y; int main() { x = malloc(sizeof(“Hello, world!”)); strcpy(x, “Hello world!”); y = “Hello, world”; free(x); fprintf(stderr, “okay”); free(y); } 然后,显然,程序将打印“okay”然后死亡,因为“指针被释放未被分配” – 显然,因为字符串是一个字符串文字。 我想编写一个在给定字符串文字时不执行任何操作的函数,但在给定非字符串文字时调用free。 这是可能的,如果是的话,怎么样?

我正确使用malloc吗?

美好的一天! 我需要在创建学生列表系统时使用malloc ….为了提高效率,我们的教授要求我们在结构上使用它,所以我创建了一个结构如下: struct student { char studentID[6]; char name[31]; char course [6]; }; struct student *array[30]; 每次我添加一条记录,就是当我使用malloc时…… array[recordCtr]=(struct student*)malloc(sizeof(struct student)); recordCtr++; 然后我像这样释放它。 for(i = 0; i < recordCtr; i++){ free(array[i]); } 我正在使用malloc ??? 如果我像这样取代上面的循环,那会有什么影响。 free(array); 提前致谢。 您的意见将受到高度赞赏。

理解指向malloc和free的指针

指针在C中是一个非常棘手的事情。因为很多人很难理解它,所以为了更好地理解我写了下面的代码: #include #include int main(int argc, char *argv[]) { int *p; // pointer -> will be dynamic allocated int *a; // array -> will be dynamic allocated // print before allocate memory (1) printf(“&p: %p\tp: %p\t*p: %d\n”, &p, p, *p); printf(“&a: %p\ta: %p\t*a: %d\n”, &a, a, *a); printf(“\n”); // allocate memory (2) p = (int […]

如何声明具有任意大小的数组

好的,这是一个C编程的家庭作业问题。 但我真的被卡住了。 我要求用户输入单词,然后我将输入插入数组,但我无法控制用户键入的单词数。 我想我要问的是如何在C中声明一个数组而不声明其长度并且不询问用户应该是多长。 我知道这与malloc有关,但是如果你能给我一些如何做的例子,我会非常感激。

我如何返回我用malloc分配的指针的大小?

看这个例子! int main( int argc, char ** argv ) { int *ptr = malloc(100 * sizeof (int)); printf(“sizeof(array) is %d bytes\n”, sizeof(ptr)); } printf函数只返回4个字节! 怎么了? 非常感谢!!!

编译自定义malloc

我编写了一个使用标准C原型实现malloc / calloc / realloc / free的自定义库,我想出了如何编译它。 我想通过链接标准应用程序来测试库吗? 这样做有什么好办法? 一旦我有一个工作库,我假设我可以用LD_PRELOAD加载它,但是如何使我的函数与其共存但优先于系统库? 我的函数需要调用malloc才能让内存运行,所以我不能完全抛弃stdlib …帮助?

当我不转换malloc的结果时,为什么编译器会抱怨?

我正在检查不需要显式地转换malloc调用结果的代码,但每当我尝试这样做时,编译器都会抛出错误。 即 char *somevar; somevar = malloc(sizeof(char) * n); //error somevar = (char *)malloc(sizeof(char) * n); // ok