- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
[编辑1:]
对于seqName,我在文件开头将其声明为全局参数
字符序列名[20];
[编辑2:]
那些不是在实际执行过程中传递给程序的数字吗?我只是通过使用 valgrind 工具得到了以下消息。我输入的命令是:
jl@ubuntu:~/work/dsr_analysis$ valgrind --tool=memcheck --leak-check=yes ./test
[编辑3:]
抱歉,由于我是Valgrind的新用户,所以在使用它时,我只是在Edit2中输入命令。
但是,我的程序确实有一些命令行参数。
因此,我认为我最好通过新命令来调试我的程序:
valgrind --tool=memcheck --leak-check=yes ./test foreman.cif 352 288
有一段我的程序:
height = atoi(argv[3]);
width = atoi(argv[2]);
sprintf(seqName,"%s", argv[1]);
// strcpy(seqName, argv[1]);
编译后生成一个exe文件test,然后我用Valgrind查看。然后我收到以下消息,但我不明白它想告诉我什么。任何人都可以提供一些帮助,谢谢。
jl@ubuntu:~/work/dsr_analysis$ valgrind --tool=memcheck --leak-check=yes ./test
==28940== Memcheck, a memory error detector
==28940== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al.
==28940== Using Valgrind-3.6.0.SVN-Debian and LibVEX;
rerun with -h for copyright info
==28940== Command: ./test
==28940==
==28940== Invalid read of size 1
==28940== at 0x40260CA: strcpy (mc_replace_strmem.c:311)
==28940== by 0x804A5C6: main (me_search.c:1428)
==28940== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==28940==
==28940==
==28940== Process terminating with default action of signal 11 (SIGSEGV)
==28940== Access not within mapped region at address 0x0
==28940== at 0x40260CA: strcpy (mc_replace_strmem.c:311)
==28940== by 0x804A5C6: main (me_search.c:1428)
==28940== If you believe this happened as a result of a stack
==28940== overflow in your program's main thread (unlikely but
==28940== possible), you can try to increase the size of the
==28940== main thread stack using the --main-stacksize= flag.
==28940== The main thread stack size used in this run was 8388608.
==28940==
==28940== HEAP SUMMARY:
==28940== in use at exit: 0 bytes in 0 blocks
==28940== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==28940==
==28940== All heap blocks were freed -- no leaks are possible
==28940==
==28940== For counts of detected and suppressed errors, rerun with: -v
==28940== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 13 from 8)1 contexts (suppressed: 13 from 8)
1 个上下文(抑制:8 个中的 13 个)
最佳答案
您确实没有发布足够清晰的代码来确定,但是如果您调用不带命令行参数的可执行文件,则 argv[1]
将包含一个 NULL
指针,argv[2]
、argv[3]
等将包含未定义的值。
编辑:您需要在 valgrind 命令行上为程序提供参数(我猜 - 我自己不使用 valgrind)。像这样的东西:
valgrind ... ./test foo bar zod
顺便说一句,在 Linux/Unix 上调用可执行文件 test
是个坏主意,因为它很容易与同名的内置 shell 混淆
关于c - linux环境下c程序中关于 "Address 0x0 is not stack' d, malloc'd or (recently) free'd”的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2987834/
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
有谁知道区别吗? 最佳答案 如果您想玩可移植的可执行文件,就没有办法绕过 the specs 的副本。 . 已经有一段时间了,但如果内存正确地为我服务:IT 和 IAT 是相同的,除了 IAT 在解析
我正在尝试在 ec2-instance 上安装 Hadoop-2.6.0。 我下载并安装了 Hadoop。我还设置了环境变量。尝试启动 hdfs 服务时出现以下错误。 [ec2-user@ip-10-
我写了一个示例程序。如果我打印 pa 和 pb 的地址都是不同的。你能告诉我为什么会这样吗? #include using namespace std; class A { int x; }; cla
*&x 是否总是等于 x?如果不是,什么时候不是? &*x 是否总是等于 x?如果不是,什么时候不是? 我的猜测是 (1) 总是正确的,但 (2) 并不总是正确的,因为 x 可能并不总是一个指针,所以
我有一个 Address 类,它是一个非常简单的元数据容器。 (在底部。) 我有一个 Address 对象数组,它不是可选的 - 它肯定存在。我还有一个类维护这些引用的可选列表,如下所示: publi
我在理解 wsdl 中 soap:address 和 http:address 标签之间的区别时遇到了一些问题。它可以互换吗?我可以使用 soap:address 代替 http:address 吗?
关于AT (...) ld 的指令, this source状态: AT ( ldadr ) The expression ldadr that follows the AT keyword spec
我正在使用 Tensorflow 的 C API 在并行模拟中进行推理。因为我想要 AVX 支持,所以我从源代码编译了 Tensorflow。我链接它并使用 wmake 编译所有内容。 现在,如果我开
就像标题一样,我是cxf的新手。只是想知道 soap:address 和发布时在应用程序上下文中的 jaxws:endpoint 中指定的地址有什么区别? 此外,在jaxws:endpoint中,地址
#include #include using namespace std; class myexception: public exception { virtual const char*
C/C++ 应用程序抛出该错误,如何开始调试(比添加打印语句更好的主意)? 最佳答案 第二个地址是不是一个非常小的数字,比如 0x00000001 或 0x00000000?如果是这样,您可能只是忘记
如果我没记错的话,几天前它曾经显示“localhost”。我不确定是什么改变了 server.address().address 返回双冒号 (::) 。我在这里读到,如果它可用,它会返回一个 IPv
我现在正在使用 MPI 练习简单的并行编程。该代码旨在通过随机生成 N*N 矩阵并使用简单的邻域加权平均滤波器来模拟图像处理,而不处理第一行和最后一行和列。我在编译时没有出错,但在运行时出现了一些我无
这个问题在这里已经有了答案: How to retrieve range.address which is longer than 255 character? (2 个回答) 5年前关闭。 觉得很奇
当我尝试启动 Apache2 时收到以下消息: * Restarting web server apache2
我正在阅读一些有关指针和结构的内容,但我就是不明白:微 Controller 的头文件中有这样的内容: #define NVIC_BASE (SCS_BASE + 0x0100) /*ICER[0]
我有 alertmanager 作为 docker 容器在两台不同的主机上运行,并且两者都应该作为集群运行。两台机器都在同一个 vpc 内,并与私有(private) IP 地址通信。 我需要知道
在 Organization schema两者都有属性 address和 location . 什么时候应该使用每一个的真实世界例子? 地点 事件、组织或行动的地点。 地址 项目的物理地址。 最佳答案
我想要具有 FIFO 的服务器-客户端模型和客户端获取目录路径,但我收到错误“读:错误地址”和“写:错误地址”。 客户端 服务器错误:“读取:地址错误” 客户端错误:“写入:地址错误” 最佳答案 您可
我是一名优秀的程序员,十分优秀!