Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar Saiz Tindanan untuk Aplikasi C dalam Linux?
Dalam C , saiz tindanan boleh dilaraskan semasa penyusunan untuk memenuhi keperluan memori khusus bagi aplikasi tertentu . Walaupun pilihan LD_FLAGS berfungsi dengan baik dalam macOS dengan g , pengedaran Linux seperti SUSE Linux menggunakan pendekatan yang berbeza.
Untuk meningkatkan saiz tindanan dalam Linux untuk satu aplikasi menggunakan GCC, dua kaedah utama biasanya digunakan:
Arahan ulimit -s boleh digunakan untuk menetapkan had saiz tindanan untuk pengguna atau proses tertentu. Walau bagaimanapun, kaedah ini memerlukan keistimewaan yang tinggi dan mesti dilaksanakan sebelum melancarkan aplikasi. Contohnya:
ulimit -s unlimited
Sebagai alternatif, saiz tindanan boleh ditetapkan secara pengaturcaraan dalam kod aplikasi menggunakan setrlimit. Kaedah ini lebih mudah alih dan membolehkan aplikasi melaraskan saiz tindanan mereka secara dinamik semasa masa jalan. Coretan kod berikut menunjukkan cara untuk meningkatkan saiz tindanan kepada 16 MB:
#include <sys/resource.h> int main (int argc, char **argv) { const rlim_t kStackSize = 16 * 1024 * 1024; // min stack size = 16 MB struct rlimit rl; int result; result = getrlimit(RLIMIT_STACK, &rl); if (result == 0) { if (rl.rlim_cur < kStackSize) { rl.rlim_cur = kStackSize; result = setrlimit(RLIMIT_STACK, &rl); if (result != 0) { fprintf(stderr, "setrlimit returned result = %d\n", result); } } } // ... return 0; }
Perhatikan bahawa walaupun dengan kaedah ini, adalah penting untuk mengelak daripada mengisytiharkan pembolehubah tempatan yang besar dalam main() kerana limpahan tindanan boleh berlaku sebelum ini. pelarasan saiz tindanan berkuat kuasa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Saiz Tindanan untuk Aplikasi C dalam Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!