C解释器运行时错误:收到内存访问冲突

时间:2016-11-18 13:32:47

标签: c loadrunner

以下代码中的strcpy行引发了此错误:

C interpreter runtime error: Memory access violation received.

如何解决此错误?

int i = 1, len;
char msg[2000];

//I have 2 strings which I need to send one by one sequentially
char *txt1 = "I am first text";
char *txt2 = "I am second text";

for (i = 1: i < 3; i++)
{
    strcpy(msg, txt[i]);
    lr_output_message(msg);
    len = strlen(msg);
}

1 个答案:

答案 0 :(得分:1)

由于很多原因,这可能不是你的代码,因为它永远不会编译

  1. 任何地方都没有txt数组。
  2. for循环语法错误。
  3. 这些只有两个,但对于这样的小代码来说它们很多。

    可以提出的另一个问题是

    • 什么是 C解释器

    但是代码中最重要的是

    • 没有充分理由复制字符串!

    你可以简单地使用原始指针并将它们传递给lr_output_message()函数,并注意你不需要字符串的长度,因为lr_output_message()可能期望定义为非 null 字节序列,后跟 null 字节。请记住,复制字符串是一项昂贵的操作,如果你能避免它,你应该这样做。

    访问冲突可能有很多原因,您正在读取仅有两个数组的第三个元素。您正在将一个非常长的字符串复制到一个没有足够空间的数组。

    但是根据发布的代码,我们无法知道哪一个是真正的问题,因为您发布的代码甚至无法编译。

    此外,为目标字符串分配一个任意大小的数组“可能”是一个不好的做法恕我直言。您应该对数组的大小有明确的限制,或者在运行时计算它。它实际上取决于很多东西,但是,通常你应该知道字符串保证适合数组,或者在运行时检查。