公司用python开发自动化测试框架,采用C++封装API的一些函数,通过ctypes模块与python进行数据通信,现在遇到一个问题入下:
c++的dll封装一个获取机器IP的函数,IP采用字符串保存,由于机器可能包含多个IP,所以采用二维数组进行保存,代码如下:
extern"C"intGetIpAddress(char**pIpAddList)
{
for(inti=0;i<10;i++)
strcpy(pIpAddList[i],ipAddress);
//ipAddress为IP地址
}
程序已经通过C++编写的DEMO测试没有问题。
PYTHON方面采用ctypes,但不知道如何分配内存空间获取该地址列表。
网上找了一遍类似的问题采用方法为
defGetIpAddress():
ipAddList=(c_char_p*2)()
dll.GetIpAddress(pointer(ipAddList))
会报accessviolationwriting0x00000000错误怀疑是分配的内存空间不对,因为我在写C++Demo调用的时候是自己分配了内存空间的
char**pIpAddress;
pIpAddress=newchar*[10];
for(inti=0;i<10;i++)
pIpAddress[i]=newchar[16];
fn(pIpAddress);
而在python中没有类似的操作。
想知道如何声明内存空间才可以获取到我需要的信息,这个问题搞了两天,耽误了很多工作,很急,在线等。。。


22 个解决方案

#1


支持新人

更多相关文章

  1. Linux内存占用分析 进程内存空间
  2. 线程往数据库里插数据时偶尔会报错
  3. Android中有时候运行程序的时候会报错:An internal error occurre

随机推荐

  1. 数据类型和运算符 MySQL学习笔记
  2. 如何用C++向MYSQL插入UNICODE字符串?
  3. mysql where in形式存储过程如何传递带有
  4. Mysql使用优化之处(转)
  5. 安装HandlerSocket,with-mysql-source报错
  6. MYSQL5.7源码包编译安装
  7. 具有多个调用的常规查询与使用PHP处理的
  8. 是否有人将数据库数据存储在PHP $ _SESSI
  9. mysql分组后取各组前五条
  10. MYSQL社区版安装手册