Calloc на Кайл Състав

G

Guest

Guest
Здрасти,

Всеки, който може да ми помогне за тази програма-долу ...

change it to int *Ary;)

Тази програма има някои предупреждение на Кайл Състав но в VC Състав работи (но Int xdata * Ary, да
промените това да Int * Ary;)Внимание Покажи:

Внимание: Модул име не Уникални
Модул: C: \ Кайл \ C51 \ LIB \ C51s.LIB (CALLOC)

Внимание: Неразкрито Външни Символ
Символ: _CALLOC
Модул: calloc.obj (CALLOC)

Внимание: Препратката към външни Неразкрито
Символ: _CALLOC
Модул: calloc.obj (CALLOC)

Код:

# включват <stdlib.h>

# включват <stdio.h>

# включват "reg52.h"нищожен tst_calloc (CONST Int размер)

(

Int xdata * Ary;

Int S = 2, N = 3;Ary = calloc (размер, sizeof (* Ary));ако (! Ary)

(

връщане;

)Ary [и] = N;/ / Свободен (Ary);

)нищожен основни (Void)

(

докато (1)

(

tst_calloc (100);

))
 
Вашият код изглежда да бъдат добри.Аз се опитах да го компилирам и всичко е ОК.Само две предупреждения L16 "непотърсената сегмент, игнорирани Overlay процес".
Единственото нещо, което аз не разбирам защо не "calloc (размер, sizeof (INT))".

PS: По-точно казано ", ако (Ary == NULL)" ще бъде по-добре, ако вземе предвид спецификацията С, NULL, където може да бъде всичко (нулева стойност е само най-често срещаните случай).

Паритет на покупателната способност: Съжаляваме за mistyping

 
Здрасти,

В calloc (размер, sizeof (INT)) и calloc (размер, sizeof (* Ary)) и двете са верни, но sizeof (* Ary) е по-добре, защото ако някой ден промяна Ary от Int * за по-голяма или по-малък тип, като например * двойно, а след това sizeof (* Ary) ще продължи да бъде вярна.

Така че, имаш ли представа как да се игнорира предупреждението?Моля, покажете ми кода ..

Може ли да обясни какво е това свободен (Ary);?В каква ситуация ние трябва да сложи това ...

Какво е паритет на покупателната способност?

Благодарности.

 
Здрасти,

Вашият причина, поради която "calloc (размер, sizeof (* Ary))" е умен.Никога не съм мислил за възможността да се направи нещо като това в моя код.Може би аз не вярвам ми компилатор толкова, колкото ти.Аз трябва да се научат и да практикуват повече ...

>> Моля, покажете ми кода ..
Имам само копие поставите вашия код в uVision.Това беше Posible да състави - звено - Debug.Два сегмента игнорирани Overlay процес може безопасно да се игнорира.Аз не знам, защо сте такива без ignorable предупреждения.Има си C51S.LIB intacted?Може би, можете да вмъкнете CALLOC.C директно във вашия проект (виж C51 \ LIB) и ще реши вашите проблеми.

>> Мога ли да обясни какво е това свободен (Ary)
Това е лесно.Когато се разпределят някакъв спомен от куп (malloc, calloc, ...) трябва да го върне обратно, когато не willl да го използвам повече.Ако не, свободна памет ще бъдат изчерпани в много кратък период от време, тъй като всяка покана за tst_calloc () ще определят нови CCA 200 байта, които ще бъдат загубени, когато процесора завършва tst_calloc () функция (Ary е само местни показалеца в tst_calloc () и По този начин тя ще бъде "унищожена", в края на tst_calloc ()).
Извън вграден софтуер, този код - без свободни () - това е лошо, но много често практикуват, защото, когато програмата се свърши си разпределят памет се връща в системата автоматично от самата ОС.В вградени света програмата никога не е завършен, така че мисля, колко XRAM е на вашия MCU и ще знаеш колко пъти tst_calloc () ще бъде изпълнена, както се очаква.

>> Какво е паритет на покупателната способност?
Нищо особено.Имах предвид Писане Scriptum като корекция на ПС, където направи някои печатна грешка.Но системата Bulletin Board скри некоригирани съобщението, така това твърдение е толкова сляпо като мен.

 
декларация за промяна

calloc (размер, (INT) sizeof (* Ary))

 

Welcome to EDABoard.com

Sponsor

Back
Top