打印
[技术问题解答]

KL02使用malloc和free有警告

[复制链接]
1308|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冰轻舞|  楼主 | 2015-11-16 14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
FSL_TICS_ZJJ| | 2015-11-16 15:42 | 只看该作者
楼主,把你调用malloc, free的代码也贴出来,另外你是在什么IDE下面做的?

使用特权

评论回复
板凳
冰轻舞|  楼主 | 2015-11-16 15:58 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-11-16 15:42
楼主,把你调用malloc, free的代码也贴出来,另外你是在什么IDE下面做的?

#include "common.h"
#include <module_gpio.h>

int main (void)
{
//        char ch;
//    uint32_t result=0;   
//    int i=0;
    SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
    EnableInterrupts;   
        while(1)
        {
                if(flag0.collect_finish==1)
                uart_send((void *)(&uartRT_pack),sizeof(uartRT_pack));
        }
}

void uart_send(void *p,uint32_t num)
{
    uint8_t *q;
    uint32_t i;
    q=(uint8_t *)malloc(num);
    strncpy((void *)q,p,num);
    for(i=0;i<num;i++)
    out_char(q);
    free(q);
}
虽然发现这里malloc使用的有点多余,但是想知道为什么使用malloc会产生警告~
使用的开发环境是KEIL 5.16   谢谢啦
工程文件中有  alloc.c   malloc在alloc.c中定义。如下所示:贴了部分代码,问题主要在
extern uint32_t HEAP$$Base;extern uint32_t HEAP$$Limit;两句中

void *
malloc (unsigned nbytes)
{
    /* Get addresses for the HEAP start and end */
    #if defined(CW)  
      extern char __HEAP_START[];
      extern char __HEAP_END[];
    #elif defined(IAR)
      char* __HEAP_START = __section_begin("HEAP");
      char* __HEAP_END = __section_end("HEAP");
    #elif defined(KEIL)
          extern uint32_t HEAP$$Base;
          extern uint32_t HEAP$$Limit;
          uint32_t __HEAP_START = (uint32_t)&HEAP$$Base;
          uint32_t __HEAP_END = (uint32_t)&HEAP$$Limit;
    #endif
   
    ALLOC_HDR *p, *prevp;

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2015-11-16 16:39 | 只看该作者
冰轻舞 发表于 2015-11-16 15:58
#include "common.h"
#include

你优化等级设置的是多少?

使用特权

评论回复
5
冰轻舞|  楼主 | 2015-11-16 16:41 | 只看该作者
优化等级 LEVEL0  没开优化

使用特权

评论回复
6
FSL_TICS_ZJJ| | 2015-11-16 17:16 | 只看该作者
冰轻舞 发表于 2015-11-16 16:41
优化等级 LEVEL0  没开优化

你在main中定义下:
          uint32_t HEAP$$Base;
          uint32_t HEAP$$Limit;
然后编译就可以了。

使用特权

评论回复
7
冰轻舞|  楼主 | 2015-11-16 17:19 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-11-16 17:16
你在main中定义下:
          uint32_t HEAP$$Base;
          uint32_t HEAP$$Limit;

  这都可以     谢谢 不知道会不会影响程序的稳定~~

使用特权

评论回复
8
FSL_TICS_ZJJ| | 2015-11-17 15:25 | 只看该作者
冰轻舞 发表于 2015-11-16 17:19
这都可以     谢谢 不知道会不会影响程序的稳定~~

不客气,你先这样做,如果后续有问题,欢迎继续发帖交流。
如果问题解决了,还请帮我们及时结贴。

使用特权

评论回复
9
冰轻舞|  楼主 | 2015-12-4 10:14 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-11-17 15:25
不客气,你先这样做,如果后续有问题,欢迎继续发帖交流。
如果问题解决了,还请帮我们及时结贴。 ...

谢谢,结贴有点晚  不好意思

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

25

帖子

0

粉丝