c - malloc、free 和变量的重新定义

标签 c malloc free redefinition

<分区>

我正在尝试使用一个变量,并在函数使用它之后立即将其删除。 基本上我是 doint str1+str2,在函数中使用它,然后释放内存。 我以为我得到了一切,但我的代码抛出警告和错误:

  1. 错误:“命令”的重新定义。
  2. 警告:函数“malloc”的隐式声明[-Wimplicit-function-declaration]
  3. 警告:内置函数“malloc”的隐式声明不兼容[默认启用]
  4. 警告:函数'free'的隐式声明[-Wimplicit-function-declaration]
  5. 警告:内置函数“free”的隐式声明不兼容[默认启用]

这是前面提到的代码:

// Step 1
char* commande = (char*) malloc(len1 + len2 + 1);
strcpy(commande, str1);
strcat(commande, str2);
function(commande);
free(commande);
// Step 2
char* commande = (char*) malloc(len3 + len4 + 1);
strcpy(commande, str3);
strcat(commande, str4);
function(commande);
free(commande);

我做错了什么?

编辑:我更正了 len2 中的拼写错误。

最佳答案

语句如

char* commande = (char*) malloc(len3 + len4 + 1);

是一个变量声明。它说编译器:我希望 commande 成为指向字符的指针。您只能在一个函数中声明一次变量,因为重新声明一个变量没有任何意义。

有关不兼容隐式定义的错误来自于您没有告诉编译器 malloc 具有什么类型这一事实。为此,您必须包含一个包含所有必要声明的头文件。将以下行放在文件顶部:

#include <stdlib.h>

关于c - malloc、free 和变量的重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892100/

相关文章:

c - 为什么这些程序(仅在一个 printf 语句中不同)有如此不同的输出?

c - C 中的双重自由或腐败 3d 数组

c - 释放动态分配的内存

控制多个 child ,处理 sigchild

c - 写了一段代码,但是有一些错误

c - 将结构类型转换为字节数组,以便稍后调用 fwrite

c - 简短快速的 malloc 内存访问问题

linux - 复用char * 指针需要free 和malloc 吗?

c - 如何释放另一个链表中的链表?

c - 打印从包含特定单词的文件中读取的一行