吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2022|回复: 7
收起左侧

[求助] arm-g++ 交叉编译之后的new char[]和delete[]出现的free(): invalid pointer和mall...

[复制链接]
z499920262 发表于 2019-12-23 11:05
使用 arm-linux-gnueabi-g++ 交叉编译出来的的软件

编译命令
[Bash shell] 纯文本查看 复制代码
arm-linux-gnueabi-g++ -o helloworld ./HelloWorld.c -std=c++11 -static -g

Hello World.c代码
[C++] 纯文本查看 复制代码
#include <iostream>

#include <string.h>

using namespace std;

int main(){

        cout<<"Hello World"<<endl;

        for(int i=0;i<10;i++){

        char* testchar=new char[100];

        printf("%ld  ",testchar);

        strcat(testchar,"Hello World test char!");

        cout<<testchar;

        printf("  %ld\n",testchar);

        delete[] testchar;

        testchar=nullptr;

        }

        return 0;

}



在arm板上的情况
[Bash shell] 纯文本查看 复制代码
Hello World

868600  Hello World test char!  868600

868600  Hello World test char!Hello World test char!  868600

868600  Hello World test char!Hello World test char!Hello World test char!  868600

868600  Hello World test char!Hello World test char!Hello World test char!Hello World test char!  868600

868600  Hello World test char!Hello World test char!Hello World test char!Hello World test char!Hello World test char!  868600

*** Error in `helloworld': free(): invalid pointer: 0x000d40f8 ***

*** Error in `helloworld': malloc: top chunk is corrupt: 0x000d4160 ***

1003528  Hello World test char!  1003528

1003528  Hello World test char!Hello World test char!  1003528

1003528  Hello World test char!Hello World test char!Hello World test char!  1003528

1003528  Hello World test char!Hello World test char!Hello World test char!Hello World test char!  1003528

1003528  Hello World test char!Hello World test char!Hello World test char!Hello World test char!Hello World test char!  1003528

*** Error in `helloworld': free(): invalid pointer: 0x000f5008 ***


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

acq1255 发表于 2019-12-23 11:12
你指针指向的地址是错误的  ,我没看到你程序里有free()
tbs1993 发表于 2019-12-23 11:21
你指针指向的地址是错误的  ,我没看到你程序里有free    (转)
 楼主| z499920262 发表于 2019-12-23 11:33
acq1255 发表于 2019-12-23 11:12
你指针指向的地址是错误的  ,我没看到你程序里有free()

指针应该是没有问题的
delete中应该是调用的free
禁闭岛 发表于 2019-12-23 11:44
你delete不加[]试试
 楼主| z499920262 发表于 2019-12-23 12:17
禁闭岛 发表于 2019-12-23 11:44
你delete不加[]试试

[Bash shell] 纯文本查看 复制代码
Hello World
5517560  Hello World test char!  5517560
5517560  Hello World test char!Hello World test char!  5517560
5517560  Hello World test char!Hello World test char!Hello World test char!  5517560
5517560  Hello World test char!Hello World test char!Hello World test char!Hello World test char!  5517560
5517560  Hello World test char!Hello World test char!Hello World test char!Hello World test char!Hello World test char!  5517560
*** Error in `./helloworld': free(): invalid pointer: 0x005430f8 ***
*** Error in `./helloworld': malloc: top chunk is corrupt: 0x00543160 ***
5652488  Hello World test char!  5652488
5652488  Hello World test char!Hello World test char!  5652488
5652488  Hello World test char!Hello World test char!Hello World test char!  5652488
5652488  Hello World test char!Hello World test char!Hello World test char!Hello World test char!  5652488
5652488  Hello World test char!Hello World test char!Hello World test char!Hello World test char!Hello World test char!  5652488
*** Error in `./helloworld': free(): invalid pointer: 0x00564008 ***


一样的
officektv 发表于 2019-12-23 12:39
你new出来的空间怎么能保证已经是初始为0的,你用 strcat 就有可能越界啊。要么用strcpy ,要么先用 memset 初始化 testchar
 楼主| z499920262 发表于 2019-12-24 11:29
officektv 发表于 2019-12-23 12:39
你new出来的空间怎么能保证已经是初始为0的,你用 strcat 就有可能越界啊。要么用strcpy ,要么先用 memset ...

多谢老哥 用strcpy确实没有问题
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 22:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表