繁体   English   中英

读取 argv 的字符指针? Memory 泄漏?

[英]Char pointer to read argv? Memory leak?

所以我的程序正在运行,我也没有来自编译器的警告。

现在,我只是使用 char *name 指针来读取 argv[4] 值。

然后我将此值用作 function 中的参数,如下所示:

char *name = argv[4];
if (name != NULL)
   FunctionX(sl, rl, name, list1);

这种方法有什么问题吗,memory 泄漏明智? 如果是这样,我应该如何改变它?

我问,因为我的编译器没有显示任何警告或错误,并且一切正常。 When i run: gcc -o programm -fsanitize=address *.c or gcc -o programm -fsanitize=address *.c -Wall it compiles just fine. 我之前有警告,但我修复了它们。 但是,查看我的程序的人说,他们在使用 gcc -o programm -fsanitize=address *.c 时收到 memory 泄漏警告。 有什么想法可能导致这种情况吗?

此代码段不会泄漏 memory。 为此,您需要调用malloccalloc或其他分配 memory 的 function ,然后调用free 简单地改组指针不会导致泄漏。

如果您之前未检查argc ,则此代码段中唯一潜在的问题是越界访问argv

这种方法有什么问题吗,memory 泄漏明智? 如果是这样,我应该如何改变它?

要发生 memory 泄漏,您首先需要调用malloc() 而你没有。

我认为您显示的代码没有问题。 argv[]只是一个指向在 C 运行时中已经为您分配的字符串的指针数组。 您需要将其视为只读,因为如果您修改任何字符串或指针数组,您可能会遇到严重的麻烦(通常在调用main()之前在堆栈中为其分配空间,所以你最好不要碰它)

但是要让您的问题成为一个好问题,您需要展示一个完整的示例,您期望的 output 和您获得的实际 output,以及完整、完整且可以编译的程序(请参阅如何创建最小的、可重现的示例) ,而您只发布了一个片段。 我只能说我没有在您的代码中看到任何错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM