0

配列を引数として渡す例

#include <iostream>
#include <malloc.h>
using namespace std;

typedef unsigned char U8;

#define MAX_LEN 20

void func1(U8* arr)
{
 printf(" Passing Base address Element1 = %s\n",arr);    
}     

void func2(U8* arr)
{
 printf(" Passing Pointer address Element1 = %s \n",arr);    
}

int main()
{

 U8 arr[MAX_LEN] = "Stack Overflow\n";
 U8* arr1 = (U8*)malloc(sizeof(MAX_LEN));
 func1(arr); /* Passing Base address */
 memcpy(arr1,arr,sizeof(arr));
 /*      
 memcpy(arr1,arr,sizeof(MAX_LEN)); Leads to Heap Corruption why ?
 */
 func2(arr1);/* Passing pointer */
 free(arr1); 
 cout << "Array Freed" << endl;
 cin.get();   
 return 0;   
}

クエリ : 1. データ処理を考慮したベスト プラクティスです。[スタックまたはヒープ上のデータ] 2. そのような場合に使用される信頼できる方法論を提案してください

4

2 に答える 2