Newer
Older
project / modules / calc / src / main.c
Nomura Kei on 26 Sep 2022 1 KB UPDATE
#include <stdio.h>

#include <sc.h>
#include <threads.h>
#include <sc_memory.h>



void mhandler(sc_memory* meminfo, const char* msg)
{
	(void) meminfo;
	printf("m line=%d, size=%d, %s\n", meminfo->line, meminfo->size, msg);
}
void fhandler(sc_memory* meminfo, const char* msg)
{
	(void) meminfo;
	printf("f line=%d, size=%d, %s\n", meminfo->line, meminfo->size, msg);
}
void ehandler(sc_memory* meminfo, const char* msg)
{
	(void) meminfo;
	printf("e %s\n", msg);
}



int func(void* v)
{
	int* val = (int*) v;
	printf("call %d\n", *val);
	int* x = (int*) malloc(sizeof(int));
	*x = *val;

	thrd_sleep(&(struct timespec){.tv_sec=1}, NULL);

	free(x);
	return 0;
}

int counter = 0;
void entries(sc_memory* entry)
{
	counter++;
	(void) entry;
}
int main(void)
{
//sc_memory_mhandler = mhandler;
//sc_memory_fhandler = fhandler;
//sc_memory_ehandler = ehandler;

/*
	char* ptr = malloc(10);
	*ptr = 'A';
	printf("%c\n", *ptr);
	char* ptr2 = (char*) realloc(ptr, 20);
	ptr2[1] = 'B';
	printf("%c\n", *ptr);
//	free(ptr2);

	char* ptr3 = (char*) malloc(3);
	*ptr3 = 'X';

	int* ptr4 = (int*) malloc(5);
	*ptr4 = 0x1234567;
*/
	thrd_t t[100];
	int v[100];
	for (int i = 0; i < 100; i++)
	{
		v[i] = i;
		thrd_create(&t[i], func, &v[i]);
	}
	for (int i = 0; i < 100; i++)
	{
		thrd_join(t[i], NULL);
	}

//	sc_memory_entries(sc_memory_dump_entry);
	sc_memory_entries(entries);
	printf("counter = %d\n", counter);
	
	return 0;
}