Alokasi malloc gagal!

C

CMOS

Guest
Hi, Saya menggunakan malloc untuk secara dinamis mengubah ukuran 2-D array integer untuk pengolahan gambar. Tapi setiap kali saya mencoba untuk mengubah ukuran array untuk nilai lebih dari 15kb (120x120) alokasi memori gagal dan dengan demikian saya tidak dapat memproses gambar yang lebih besar daripada 120 120 piksel. Saya menggunakan Turbo C 3.0 beroperasi di DOS Shell dari jendela. Apakah ini memori maksimum yang dapat ditugaskan untuk array 2-D? Bagaimana saya dapat meningkatkan lebih lanjut?
 
Aneh ... Dapatkah Anda menempatkan kode sampel ilustrating .... NeuralC
 
Apa model memori yang Anda gunakan? Kecil, besar, hughe ...
 
[Quote = neuralc] Aneh ... Dapatkah Anda menempatkan kode sampel ilustrating .... NeuralC [/quote] Ini adalah kode saya
Code:
 batal CreateImage (int *** gambar, int & M, int & N) {int i, j, jika ((* image = (int **) malloc (N * sizeof ( int *)))== NULL) {cout
 
Seberapa besar adalah int compiler anda? 2 atau 4 byte? Model kecil mungkin memberikan Anda hanya 64K ruang data. Mengalokasikan kedua lingkaran N * M * sizeof (int) byte. Itu ditambah apa pun compiler telah dikonsumsi mungkin melebihi 64K. Cobalah model memori yang berbeda.
 
Saya mencoba dengan model BESAR tapi tetap tidak ada perubahan. Aku bahkan mengubah pointer ke "jauh" dan digunakan farmalloc bukan malloc. Masih alokasi falis untuk gambar besar! : (
 
coba ini: int ** CreateImage (int M, int N) {int i; int ** pt, jika ((pt = malloc (n * sizeof (int *)))== NULL) {cout
 
Ada link bagaimana mengatur ukuran tumpukan dan tumpukan tetapi untuk Borland 4,5. Jika TC3 tidak mendukung itu, mungkin Anda bisa chnage untuk versi 4.5 http://teaching.idallen.com/c_programming/changingRunTimeStack.html Mungkin salah penanganan memori yang berbeda versi model dikenakan disalahkan dalam TC3. Periksa situs borland - mungkin ada petunjuk PS Mengalokasikan memori untuk pointer yang baik untuk memiliki akses yang lebih cepat, tetapi Anda akan menggunakan tambahan 1200 * sizeof (int *) memori. Kau tahu geometri array yang apriori sehingga berlebihan untuk memiliki sebuah array pointer tambahan.
 
jika Anda tidak memiliki masalah untuk beralih ke kompiler lain, lebih baik menggunakan Microsoft Visual C + + dan menggunakan "nyata" memori rutin alokasi di dalam OS itu sendiri (win32API), saya pikir itu lebih cepat. Fungsi Win32API adalah: 1. VirtualAlloc 2. HeapAlloc 3. GlobalAlloc 4. LocalAlloc IIRC salah satu fungsi ini disebut dari malloc fungsi perpustakaan dalam OS itu sendiri. Apa yang saya maksudkan dengan ini, adalah memanggil fungsi malloc akan diselesaikan oleh "proses menghubungkan dinamis" menjadi salah satu fungsi di atas.
 
Hai, Masalah terpecahkan sekarang. Compiler adalah memberikan masalah dengan farmalloc. Jika saya mencoba untuk mengeksekusi program saya ketika kompiler sedang berjalan, itu memberikan kesulitan. Menjalankan exe. Dikompilasi setelah menutup IDE compiler bekerja TANPA masalah.
 
Itu hal model memori adalah penderitaan murni. Bagaimana beralih ke sebuah kompiler yang lebih baru? Puluhan tahun lalu saya menggunakan Borland alat DOS, tapi kemudian saya menemukan DJGPP dan kemudian mingw. Aku sudah tersenyum sejak itu. Keduanya bebas. http://www.delorie.com/djgpp/ (gcc untuk DOS) http://www.mingw.org/ (gcc untuk Windows)
 
hai, apa yang "getch ()"? saya punya masalah kompilasi kode di atas. ia mengatakan pengenal dideklarasikan. Apakah saya perlu sebuah header atau sesuatu? Terima kasih!
 
getch () akan menunggu sampai pengguna menekan tombol apapun. Ini actiually mengembalikan nilai ascii dari kunci. Hal ini didefinisikan dalam "conio.h" Untuk c + + menggunakan cin;
 
mendapatkannya! tetapi saya memiliki masalah dengan exit () sekarang .. nieway, aku akan mencari tahu sendiri .. terima kasih lagi! btw, CMOS, bukankah ini thingy u're array yang terkait dengan tambang melakukan? ingat? Aku bertanya u tentang ambang batas barang
 
ru akan mengekspresikannya menggunakan GUI? jika im akan menggunakan VB sebagai GUI, aku harus menyimpan c + + kode ke file dll. kemudian gunakan VB untuk membacanya ritus?
 
[Quote = zkai2000] jika im akan menggunakan VB sebagai GUI, aku harus menyimpan c + + kode ke file dll. kemudian gunakan VB untuk membacanya ritus? [/quote] Tentu saja itu jalan untuk mengambil jika Anda akan menggunakan VB sebagai GUI. Aku sudah melakukan hal seperti ini sebelumnya, tapi aku antarmuka VB untuk dll yang dibangun menggunakan bahasa C, bukan C + +.
 
Thats satu dan cara yang lebih cepat untuk melakukannya. Atau Anda dapat menulis kode yang sama di VB juga.
 
nggak .. coz i cant i perlu C + + untuk melakukan perubahan orientasi saya algoritma. saya perlu untuk mengayunkan peta array yang sekitar: D AFAIK, VB cant melakukan ritus itu? : (
 

Welcome to EDABoard.com

Sponsor

Back
Top