3463
- 收藏
- 点赞
- 分享
- 举报
海思 hi3516ev200
程序没有动态分配内存,但内存一值在下降,初始可用22M内存,下降到6M左右,一下子又变为22M可用,咋回事啊?
1、我的开发环境。
海思 hi3516ev200,编译器 arm-himix100-linux-gcc,内核 linux-4.9.37。
2、遇到的问题。程序(有动态内存分配)刚跑起来时候,可用内存还有 22M,大概跑了 60 分钟,可用内存还剩下 6m。然后程序被强行杀死,内核打印类似 Out of memory: Kill process 的信息。所以我怀疑是内存泄漏导致内存耗尽,但我找不到到底是那里泄漏了。当我把很多无关进程去掉后,单独跑一个进程,该进程没有动态分配内存。也出现类似情况,但是内存下降至 6m 左右,一下子又提高到 22M ,程序没有被杀死。为什么会这样?内存变化情况如下,单位是K:
22284
21900
21772
21324
19500
19176
18792
18056
16904
16296
15560
14888
14216
12680
11448
10008
8536
6992
6756
22352
20656
20336
19472
18672
17968
15440
11040
69609
22088
3、代码很简单,最终在 while(1)循环不断通过 tcp 发送数据给服务器。
void* thread_report_device_info(void* arg)
{
int sockfd;
char ip_addr[IP_ALEN] = {0};
struct sockaddr_in s_addr_in;
char buffer[1024];
int ret = -1;
int len =0;
int conn_state, i;
INI_T *ini_info = (INI_T *)arg;
int32_t mach = 0,macl = 0;
printf("\n thread send device info start \n");
while(1)
{
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd == -1)
{
printf("socket error! thread exit \n");
break;
}
memset(&s_addr_in,0,sizeof(s_addr_in));
s_addr_in.sin_addr.s_addr = inet_addr(ini_info->server_ip);
s_addr_in.sin_family = AF_INET;
s_addr_in.sin_port = htons(SERVER_PORT);
//set tcp keepalive
set_tcp_keep_alive(sockfd);
//connet
conn_state = 0;
for(i = 0; i< 200; i++)
{
usleep(10000);
ret = connect(sockfd,(struct sockaddr *)(&s_addr_in),sizeof(s_addr_in));
if(ret == 0)
{
conn_state = 1;
ret = local_inet(ini_info->net_type,ip_addr,&mach,&macl);
if (0 != ret){
printf("get local ip failed");
return NULL;
}
printf("ip_addr = %s, mac = %06x%06x \n", ip_addr, mach,macl);
break;
}
}
if(conn_state == 0)
{
printf("connect failed \n");
close(sockfd);
continue;
}
printf("connect success \n");
int cnt = 0;
while(1)
{
sleep(5);
memset(buffer,0,sizeof(buffer));
snprintf(buffer, sizeof(buffer), "{\"type\":0,\"opcode\":1,\"information\": {\"id\":\"112233445566\"},\"status\":{\"power\":100,\"temp\":56}}");
cnt = strlen(buffer);
printf("buffer = %s, strlen(buffer) = %d\n", buffer, cnt);
ret = write(sockfd,buffer,cnt);
if(ret <= 0)
{
printf("send status info error \n");
break;
}
printf("report device info to ai-box success \n");
}
close(sockfd);
}
return NULL;
}
4、哪位仁兄可以帮帮我? 谢谢。
我来回答
回答1个
时间排序
认可量排序
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片
相关问答
-
2020-10-10 14:14:42
-
2020-09-29 10:45:44
-
2020-01-15 09:41:39
-
2020-08-29 10:17:51
-
2020-08-03 20:19:31
-
2020-05-20 12:12:34
-
2019-05-22 17:03:57
-
2019-10-17 14:11:30
-
2020-08-04 22:05:36
-
2019-12-23 18:04:43
-
2019-10-18 17:48:22
-
2021-04-21 09:52:11
-
2020-10-15 10:51:22
-
2020-12-07 09:44:53
-
2020-04-04 14:37:50
-
2019-08-30 23:49:16
-
2021-03-30 18:58:49
-
2019-06-14 16:31:56
-
2020-03-27 16:31:17
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
100Hi3519DV500移植阿里云aliyun-oss-c-sdk-3.11.2
-
10【悬赏】Hi3519DV500在新打板的硬件上调用svp_acl_mdl_execute 会宕机
-
10海思 PQTools 使用时显示无法注册ae库 awb库
-
50求imx291 mclk37.125M 4lane 1920x1080@30fps WDR的初始化系列
-
5Hi3516DV500-DMEBPLUS_6L_T_LPDDR4_2400M-2GB_32bit-A55_850M.xlsm
-
25鸿鸥派【Hi3519DV500】双摄sc450ai+10.1显示屏点不亮
-
5SS626接WCH HUB芯片CH335F问题
-
10求一份RK3588下IMX586摄像头的IQ json文件
-
50Hi3519DV500+OS04A10 slave驱动 (双目同步问题)
-
103616 3403 FPN标定黑斑问题
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认

微信扫码分享
QQ好友