C解释器运行时错误:收到内存访问冲突
下面代码中的C解释器运行时错误:收到内存访问冲突,c,loadrunner,c-string,C,Loadrunner,C String,下面代码中的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 tex
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);
}
inti=1,len;
char-msg[2000];
//我有2个字符串,我需要发送一个接一个顺序
char*txt1=“我是第一个文本”;
char*txt2=“我是第二个文本”;
对于(i=1:i<3;i++)
{
strcpy(msg,txt[i]);
lr_输出_消息(msg);
len=strlen(msg);
}
由于很多原因,这不可能是您的代码,因为它永远不会编译
任何地方都没有txt
数组
for
循环语法错误
这仅仅是两个,但是对于这么小的代码来说,它们太多了
可以问的另一个问题是
- 什么是C解释器
但代码中最重要的是
- 没有充分的理由复制字符串李>
您只需使用原始指针并将它们传递给lr\u output\u message()
函数,还需要注意的是,您不需要字符串的长度,因为lr\u output\u message()
可能需要一个定义为非空字节序列后跟空字节的字符串。请记住,复制字符串是一项昂贵的操作,如果可以避免,就应该这样做
访问冲突可能有很多原因,您正在读取只有两个元素的数组中的第三个元素。您正在将一个很长的字符串复制到一个没有足够空间的数组中
但是从发布的代码中不可能知道哪一个是真正的问题,因为您发布的代码甚至不会编译
此外,为目标字符串分配一个“可能”足够大的任意大小的数组是一种不好的做法。您应该对数组的大小有一个明确的限制,或者在运行时进行计算。它实际上取决于许多因素,但一般来说,您应该知道字符串保证适合数组,或者在运行时检查。什么是txt
?(i=1:imaybechar*txt[]={“我是第一个文本”、“我是第二个文本”}
和(i=0:i@LP你是说i<3
我想。请你解释一下什么是“C解释器”?@LP我想我没听懂你的意思。我的意思是char*txt[]={“我是第一个文本”,“我是第二个文本”}
与i<2
配合使用,但与i<3
配合使用则是UB。