
A 表示された画面左側の[Categories:]から"xc16-ld"の項目をクリックします。
B 表示された画面右側で、[Option categories:]は"General"ですね。
C 画面右下側で、[Heap size]に最大確保するであろうサイズをバイト単位で入力します。
尚、この操作は"MPLAB X v4.10"と"XC16 v1.30"での方法で他の場合は操作方法が異なるかもね。
メモリの割付けと解放を行う関数説明
先ず、使用する場合は#include <stdlib.h> が必要です。
(XC16の場合は"stdio.h"でなく"stdlib.h"の様です間違わない様に)
ptr = malloc(size)
指定したサイズ分のメモリの割り付けを要求します。
unsigned int size : 割り付けたいメモリの大きさを指定します
char* ptr : 成功した場合は割り付けられたメモリへのポインタを返します
メモリが無い場合は0を返します。
free(ptr)
割り付けられているメモリを解放します。
char* ptr : 解放するメモリへのポインタを指定します
例)
char *ptr ;
ptr = malloc(12) ;
memcpy(ptr,"memory test",1) ;
free(ptr) ;
p = realloc(ptr,size)
例)
#define ADDRESSBOOK_SU 10
struct {
char name[20] ;
char tel[12] ;
char adrs[50] ;
} c ;
char *p , *ptr ;
int i ;
p = ptr = calloc(ADDRESSBOOK_SU,sizeof(c)) ;
for (i=0 ; i < ADDRESSBOOK_SU ; i++) {
// 以下の処理例はマイコン的でない記述方法です m(_ _)m
printf("Name : ") ;
scanf("%s",p->name) ;
printf("TEL : ") ;
scanf("%s",p->tel) ;
printf("Address : ") ;
scanf("%s",p->adrs) ;
p++ ;
}
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2019 Shigehiro Kimura All Rights Reserved.