Linux C function() 參考手冊:malloc(配置內存空間-實做範例)
Linux C function() 參考手冊:malloc(動態配置內存空間-實做範例)
資料來源:http://people.cs.nctu.edu.tw/~yslin/library/linuxc/main.htm
線上執行:http://www.tutorialspoint.com/compile_c_online.php
code2html:http://tohtml.com/
#include <stdio.h>
#include <stdlib.h>
#define ROW 2
#define COL 4
// ====================================
// main function
int main(int argc, char**argv)
{
int i=0, j=0;
int **ptr2 = NULL;
// 生成一維指標陣列
ptr2 = (int**)malloc(sizeof(int*)*ROW);
// 每個指標陣列再生成整數陣列
for(i=0; i<ROW; i++)
{
ptr2[i] = (int*)malloc(sizeof(int)*COL);
}
// write
int cnt = 0;
for(i=0; i<ROW; i++)
{
for(j=0; j<COL; j++)
{
ptr2[i][j] = cnt++;
}
}
// read value and address
for(i=0; i<ROW; i++)
{
for(j=0; j<COL; j++)
{
printf("ptr2[%d][%d]=%d(%0X)\n", i, j, ptr2[i][j], &ptr2[i][j]);
}
}
// 釋放指標陣列
for(i=0; i<ROW; i++) free(ptr2[i]);
// 釋放指標
free(ptr2);
return 0;
}
One thought on “Linux C function() 參考手冊:malloc(配置內存空間-實做範例)”
補充C++版
// ====================================
#include <iostream>
using namespace std;
#define ROW 2
#define COL 4
// ====================================
// main function
int main(int argc, char**argv)
{
int i=0, j=0;
int **ptr2 = NULL;
// 生成一維指標陣列
ptr2 = new int*[ROW];
// 每個指標陣列再生成整數陣列
for(i=0; i<ROW; i++) ptr2[i] = new int[COL];
// write
int cnt = 0;
for(i=0; i<ROW; i++) {
for(j=0; j<COL; j++) ptr2[i][j] = cnt++;
}
// read value and address
for(i=0; i<ROW; i++) {
for(j=0; j<COL; j++) {
cout << "ptr2[" << i << "][" << j<< "]=" << ptr2[i][j];
cout << "(" << hex << &ptr2[i][j] << ")" << endl;
}
}
// 釋放指標陣列
for(i=0; i<ROW; i++) delete ptr2[i];
// 釋放指標
delete ptr2;
// 事實上, 上面那二行用 delete [] ptr2; 就行了
return 0;
}