[英]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。 为此,您需要调用malloc
、 calloc
或其他分配 memory 的 function ,然后不调用free
。 简单地改组指针不会导致泄漏。
如果您之前未检查argc
,则此代码段中唯一潜在的问题是越界访问argv
。
这种方法有什么问题吗,memory 泄漏明智? 如果是这样,我应该如何改变它?
要发生 memory 泄漏,您首先需要调用malloc()
。 而你没有。
我认为您显示的代码没有问题。 argv[]
只是一个指向在 C 运行时中已经为您分配的字符串的指针数组。 您需要将其视为只读,因为如果您修改任何字符串或指针数组,您可能会遇到严重的麻烦(通常在调用main()
之前在堆栈中为其分配空间,所以你最好不要碰它)
但是要让您的问题成为一个好问题,您需要展示一个完整的示例,您期望的 output 和您获得的实际 output,以及完整、完整且可以编译的程序(请参阅如何创建最小的、可重现的示例) ,而您只发布了一个片段。 我只能说我没有在您的代码中看到任何错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.