eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAndroid › Re: Android
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Jacek Radzikowski <j...@s...die.die.die.piranet.org>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Android
    Date: Wed, 09 Feb 2011 20:08:13 -0500
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 49
    Message-ID: <iivdpv$o2u$1@inews.gazeta.pl>
    References: <iio2dt$58r$1@opal.futuro.pl> <iipqur$fq$2@news.onet.pl>
    <iipufp$bf3$1@opal.futuro.pl> <iisd8q$6td$1@news.onet.pl>
    <iish8c$8um$1@opal.futuro.pl>
    <o...@4...com>
    <s...@b...pl>
    <1...@v...googlegroups.com>
    <iiuo70$cpv$1@opal.futuro.pl>
    NNTP-Posting-Host: pool-71-241-238-52.washdc.fios.verizon.net
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1297300095 24670 71.241.238.52 (10 Feb 2011 01:08:15 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 10 Feb 2011 01:08:15 +0000 (UTC)
    X-User: piranha32
    In-Reply-To: <iiuo70$cpv$1@opal.futuro.pl>
    User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027
    Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:604564
    [ ukryj nagłówki ]

    On 02/09/2011 01:59 PM, Lelek@ wrote:

    No to chyba się wyjasniło

    > public void dupa() {
    > byte buf[] = new byte[256];
    Tutaj buf jest referencją do twojej tablicy...

    > buf = FromEditText.getBytes("UTF-8");
    Ale tutaj już buf jest referencją do obiektu zwróconego przez
    FromEditText.getBytes(). Wskazanie do tablicy, która zaalokowałeś
    zostało stracone i przydzieloną pamięcią zajmie się przy najbliższej
    okazji garbage collector.
    Powyższy kod jest równoważny takiej linijce:

    byte buf[] = FromEditText.getBytes("UTF-8");

    Ja bym twój kod przepisał do takiej postaci:

    byte buf[] = FromEditText.getBytes("UTF-8");
    int bfx[] = nil;
    if(buf.length>0)
    {
    bfx[] = new int[buf.length];
    for (i = 0; i < buf.length; i++)
    {
    //elementy buf mają po 8 bitów, więc maskowanie 0xff
    //jest trochę bez sensu
    bfx[i] = ((int)buf[i] & 0xFF);
    }
    }

    if(bfx!=nil)
    {
    //robimy cos z bfx
    }

    Bardzo ważne jest alokowanie pamięci na bfx po odczytaniu zawartości
    buf. Przy alokowaniu bfx o stałej długości, dopóki FromEditText.getBytes
    zwróci tablicę mniej niż 256 bajtów, program będzie działał poprawnie.
    Ale jeśli buf będzie dłuższe niż długość bfx, program wywali się z
    błędem dostępu do pamięci przy próbie zapisu pierwszego elementu, który
    się nie mieści w bfx.


    BTW. próbowałeś przechwytywać wyjątki?

    pzdr.
    j.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: