51Testing软件测试论坛

标题: 在脚本中定义几个指针变量 运行的时候老是报内存的错。 [打印本页]

作者: wzw1982    时间: 2008-4-29 00:29
标题: 在脚本中定义几个指针变量 运行的时候老是报内存的错。
在脚本中定义几个指针变量 运行的时候老是报内存的错。

例如:
char *a="test1", *b="test2";
strcat(a,b);
lr_message(a);

运行的时候报C interpreter run time error: vuser_init.c :  Error -- memory violation : Exception ACCESS_VIOLATION received.
作者: iori    时间: 2008-4-29 09:40
sorry,改一下


   char *a="test1", *b="test2";
   char c[100];
   strcat(c,a);
   strcat(c,b);

lr_message(c);

[ 本帖最后由 iori 于 2008-4-29 11:13 编辑 ]
作者: huior    时间: 2008-4-29 10:16
为什么不这样写呢?

    char a[]="test1", b[]="test2";
        strcat(a,b);
        lr_message(a);

指针在C中是非常有用的,但在LR脚本中其实可以完全不用指针
作者: 亚瑟王    时间: 2008-4-29 11:16
标题: 回复 3# 的帖子
我用指针来执行,就报错

为什么在LR中用指针就不可以?难道是对指针支持不好吗?

[ 本帖最后由 亚瑟王 于 2008-4-29 13:04 编辑 ]
作者: iori    时间: 2008-4-29 12:59
标题: 回复 4# 的帖子
char *a = "test1";
        char *b = "test2";
        char *c = (char *)malloc(100);               
        *c= '\0';
        strcat(c,a);
        strcat(c,b);
        lr_message(c);
作者: sally_0817    时间: 2008-4-29 13:33
char *a="test1", *b="test2";
   char c[100];
   strcat(c,a);
   strcat(c,b);

lr_message(c);

用这个方法是运行通过的啊......
不过还是用三楼的方法来的简单一些
作者: wzw1982    时间: 2008-4-29 16:00
知道原因了:
你首先要明白char *a="test1",c语言怎么分配地址空间的!
此时你定义了一个指针,但是并没有定义空间存放"test1"而是编译器帮程序找到一个空间存放"test1",显然,把这里的"test1"当成常量并把它放到程序的常量区是编译器最合适的选择,strcat你的目的要把test2存放进去!那怎么可以哦!建议你这么写!先预分配空间!并建议你多看看C语言!这种错误不应该犯哦
char a[12]="test1", *b="test2";
strcat(a,b);
lr_message(a);
作者: hmilyjch    时间: 2008-4-29 16:16
讲得好!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2